Liczba w html do zmiennej w JS

0

Cześć mam pytanie. Zna ktoś sposób na wyciągnięcie liczby całkowitej zapisanej w elemencie HTML, którego znam id i zapisanie w zmiennej w JS?

0
   let handle = document.getElementById('idElementu');
   let value = parseInt(handle.textContent);

Coś w tym stylu?

1

To proste

const a = document.getElementById('dupa').value;
0

Sprawdze i dam znać

0

Powiem tak oba sposoby są dobre tylko się nie dobrze sprecyzowałem pytanie, ale już mniejsza o tamto, bo znalazłem inny sposób. Za to mam inny problem. Robię grę kamień, papier ,nożyce i utknąłem na tym, że w warunku z parametrami nie zwiększają się wartości parametrów. Do ich zwiększania chce użyć param.'nazwa-parametru'++; Mógłby ktoś zerknąć? https://codepen.io/Dawidpstrak/pen/eowWGe

1

Parametry się zwiększają tylko nigdzie nie sprawdzasz ich wartości. Zadeklarowałeś funkcję winner ale jej nie używasz. Popatrz sobie jak się robi gry np. na githubie. Zazwyczaj przycisk Nowa gra uruchamia jakąś funkcję z pętlą, która kończy działanie gdy któryś z graczy wygra. Za dużo logiki masz w eventListenerach, powinieneś przenieść część do funkcji z pętlą gry.

1

Jak napisał @Haskell, parametry się zwiększają, możesz sprawdzić wywołując console.log(params) (i włączając narzędzia deweloperskie w przeglądarce) albo alert(params) (i w tym wypadku narzędzi już nie musisz włączać).

Natomiast "nie zwiększają się" wartości zawartości elementów HTML, czyli wartości węzłów drzewa DOM o "typie" #text (tekst jako taki nie może zwiększać się, dlatego piszę "nie zwiększają się" w cudzysłowie). Możesz wyświetlić je oraz ich wartości w konsoli deweloperskiej np. za pomocą poleceń document.getElementsByTagName("td")["gracz"].childNodes[0] (dla gracza) oraz document.getElementsByTagName("td")["bot"].childNodes[0] (dla bota).

Dlaczego się nie zmieniają? Dlatego, że aktualizujesz je jedynie raz, przed uruchomieniem gry, w tym miejscu:

var playerscore = params.x;
var botscore = params.y;

gracz.innerHTML = playerscore;
bot.innerHTML = botscore;

Żeby się zmieniały, potrzeba aktualizować je za każdą ich zmianą. Możesz do tego stworzyć nową funkcję i ją wywoływać albo bezpośrednio skopiować gracz.innerHTML = .... Wywołanie funkcji albo kopie tego polecenia należy wstawić zaraz za aktualizacją właściwości obiektu params. Czyli zamiast tego:

params.x++;

piszesz (na przykład) tak:

params.x++;
gracz.innerHTML = params.x;

I to w każdym miejscu, gdzie jest aktualizowanie wartości właściwości obiektu params. Oczywiście przy x-ach x, przy y-ach y.

PS. Aha, żeby np. w Firefoksie lub Chrome wyświetlić cokolwiek z drzewa DOM na takich stronach jak CodePen czy JSFiddle, musisz przełączyć docelową iframe, która jest używana przez narzędzia deweloperskie. Tutaj instrukcja: https://stackoverflow.com/a/7961681


UPDATE: Właśnie zauważyłem, że w Firefoksie możesz nawet łatwiej wyświetlić te elementy: gracz.childNodes[0] oraz bot.childNodes[0] (to chyba działa jedynie wtedy, jeśli tak jak u Ciebie są ustawione ID dla danych elementów).

1

Dzięki Panowie za szczegółową pomoc. Udało mi się ukończyć grę :) https://codepen.io/Dawidpstrak/pen/eowWGe?editors=0010

0

Może w przyszłości jak będzie mi się nudziło to usprawnię ten projekt, on spełnia wymogi polecenia w zadaniu w 100% ale na razie muszę cisnąć z materiałem - jestem na bootcampie. Pozdro :)

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