Autor Zpráva
webtest2
Profil *
Dobrý den mám menší problém s tímto kódem:
document.getElementById("prumner").getElementsByTagName("P").className += " table table-expanded tabulka";
Má za úkol získat elemnet s id "prumner" a v něm má najít tag <p> a připsat class "table table-expanded tabulka", ale výsledkem při tesování je že kód nic neudělá.

Tady je kód na které zatím zkouším funkčnost:
<!DOCTYPE html>
<html>
<body>

<style>
.tabulka{color: blue;}
</style>
<p id="prumner"><p>Test</p></p>

<button onclick="myFunction()">Spustit</button>

<script>
function myFunction() {
document.getElementById("prumner").getElementsByTagName("P").className += " tabulka";
}
</script>

</body>
</html>
juriad
Profil
getElementsByTagName vrací kolekci všech nalezených elementů.
„Returns an HTMLCollection of elements with the given tag name.“
Otázka je tedy, které mu tagu <p> uvnitř prumneru se má třída přiřadit.

Můžeš také použít querySelector, který vrací první výskyt nebo querySelectorAll, který vrací všechny výskyty.
document.querySelector('#prumner p')

Už jsem doufal, že tě JS trestá za neznalost češtiny. Píše se „průměr“ bez „n“.
Fisir
Profil
Reaguji na webtesta2:
Nemůžeš mít dva odstavce v sobě. Kód
<p id="prumner"><p>Test</p></p>
je ve skutečnosti
<p id="prumner"></p><p>Test</p><p></p>

Metoda getElementsByTagName() vrací kolekci elementů, musíš si proto nějaký vybrat:
document.getElementById("prumner").getElementsByTagName("P")[0].className += " tabulka";

průmněr“ se píše „průměr“
webtest2
Profil *
Mockrát děkuji
document.querySelector('#prumner p') funguje jak má.


samozřejmě document.getElementById("prumner").getElementsByTagName("P")[0].className += " tabulka"; taktéž
weroro
Profil
Taká otázka do pléna.
Ako je možné, že riešenie [#4] funguje aj napriek tomu, že sa pracuje s HTML kódom [#3]? Javascript predsa pracuje s vyrenderovaným HTML a nie s HTML originálneho dokumentu. Ako je potom možné, že webtest2-tovi nájde vnorené <p> aj keď by tam nemalo byť?
Radek9
Profil
weroro:
Nefunguje. Tipl bych si, že ten element s id prumner ve skutečnosti nebude odstavec.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: