JS pytanie od początkującego, prosty skrypt

0

Witam, jakoś zacząłem działać w js ale robie sobie ćwiczenia praktyczne bo inaczej nie umiem zapamiętać zastosowania oferowanych przez język możliwości.
Otóż do rzeczy, robię taką tekstową grę, pójdź na przygodę, zdobądź expa i złota, wymień na przedmioty itd, pomyślałem, że każdy przedmiot będzie objektem:

cost: 50,
staminaRec: 20,
hpRegen: 0
}
var healthPot = {
cost: 100,
staminaRec: 0,
hpRegen: 50
} ```
i chciałem się do nić odwołać np w takiej funkcji:

function buyPotion() { CHCIAŁEM W NAWIASIE ODWOŁAĆ SIĘ DO OBJ. HEALTHPOT ABY W TEJ FUNKCJI UŻYWAŁO ZMIENNYCH (NP. COST) Z TEGO OBJEKTU.
if (postac.gold>this.cost) { <<<<this.cost i cost nie działa
items.push("potion");
postac.gold = postac.gold - this.cost;
console.log("kupiłeś miksture");
}
else {
console.log("masz za mało złota");

I nie działa, chciałem użyć funkcji tym
```<button onclick="buyPotion(healthPot)">Kup miksture życia</button>```
Jeśli użyje normalnej wartości np. 50 zamiast cost to wszystko działa normalnie.
Przejrzałem parę lekcji ale już mam ból głowy, dopiero zaczynam i chciałbym aby ktoś mnie oświecił, bez zbędnego pierdzielenia jaki to głupi jestem i że sam sobie mogę znaleźć odpowiedź.
Pozdrawiam
0

Jak ma ci działać jak wrzuciłeś do kodu całe zdanie po polsku?

1

Możesz wrzucić cały kod na jsfiddle? Póki co podałeś za mało danych, żeby rozwiązać Twój problem.

Chociaż podejrzewam, ze to coś z this, bo odwołujesz się do this.cost podczas gdy this po kliknięciu w guzik to ten guzik, który raczej nie ma pola cost.

0

Gdzie? Chyba nie chodzi ci te po prawo bo ja to teraz napisalem

0
Desu napisał(a):

Możesz wrzucić cały kod na jsfiddle? Póki co podałeś za mało danych, żeby rozwiązać Twój problem.

Chociaż podejrzewam, ze to coś z this, bo odwołujesz się do this.cost podczas gdy this po kliknięciu w guzik to ten guzik, który raczej nie ma pola cost.
Może być tak//pastebin.com/umYePSbq
Jeśli tam nie odwołam się do obiektu i użyje normalnej liczby to działa normalnie.
SORKI DOUBLE POST

1

Trzymaj się angielskiego nazewnictwa, to trudno się to czyta.

Do funkcji przekazujesz staminaPot jako argument, ale Twoja funkcja nie przyjmuje żadnych parametrów. Zamień this na staminaPot i dodaj staminaPot do sygnatury funkcji (jako parametr).

Jeżeli użyjesz this wewnątrz tej funkcji to będzie ono reprezentowało kliknięty przycisk, a nie tak jak Ci się wydawało staminaPot

0

Dzięki ale nie trzeba być tak offensive.

1
bylduda napisał(a):

Dzięki ale nie trzeba być tak offensive.

Nie jestem złośliwy tylko chciałem podkreślić, że jak szukasz pomocy to pasuje ją składnie sformułować. Skoro autor nie poświęcił 5 min na sformatowanie tekstu to dlaczego ktoś ma tracić czas na analizę kodu?

0

No rzeczywiście nie umiem formatować tekstu, pierwszy wpis na forum. Nie do końca rozumiem, co miałem zrobić. Na to jsfiddle czy coś podobnego miałem od razu wrzucić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1