Autor Zpráva
Michales
Profil
Dobrý den,
následující script mi hlásí v konzoly: TypeError: document.getElementById(...) is null

   <script type="text/javascript">
function myFunction() {
var id = document.getElementById("id").value;
var dataString = 'id1=' + id;
 {
// AJAX code to submit form.
$.ajax({
type: "POST",
url: "lyrics.php",
data: dataString,
cache: false,
success: function(html) {
$("#test").html(response);
}
});
}
return false;
}


</script>

<td><a onclick="myFunction()" id="<?php echo htmlSpecialChars($result['Title'],ENT_QUOTES); ?>"><?php echo htmlSpecialChars($result['Title'],ENT_QUOTES); ?></a></td>

Můžete mi poradit jak to opravit?
Děkuji
Radek9
Profil
Michales:
Opravdu máš na stránce element, který má id "id"?
Michales
Profil
Radek9:
v id je proměnná <?php echo htmlSpecialChars($result['Title'],ENT_QUOTES); ?>
Radek9
Profil
Michales:
O tomhle elementu nemluvím. Podle kódu chceš přistupovat k nějakému formulářovému prvku, nebo se pletu?
Michales
Profil
Radek9:
Potřebuji po kliku na tento řádek:<td><a onclick="myFunction()" id="<?php echo htmlSpecialChars($result['Title'],ENT_QUOTES); ?>"><?php echo htmlSpecialChars($result['Title'],ENT_QUOTES); ?></a></td>
Poslat ajaxem proměnou id do souboru lyrics.php
Keeehi
Profil
<a onclick="myFunction(this)" ....

<script type="text/javascript">
function myFunction(e) {
    var dataString = 'id1=' + e.id;

    $.ajax({
        type: "POST",
        url: "lyrics.php",
        data: dataString,
        cache: false,
        success: function(html) {
            $("#test").html(response);
        }
    });

    return false;
}
</script>
Radek9
Profil
Michales:
Aha, už to chápu. V tom případě také není absolutně vhodné používat atribut id (kvůli možným kolizím a chybám), ale spíš nějaký data atribut:

<td><a onclick="myFunction(this)" data-id="<?php echo htmlSpecialChars($result['Title'],ENT_QUOTES); ?>"><?php echo htmlSpecialChars($result['Title'],ENT_QUOTES); ?></a></td>

function myFunction(e) {
  var dataString = 'id1=' + e.getAttribute("data-id");
  …
Michales
Profil
Keeehi:
Děkuji moc, teď mi to háže chybu ReferenceError: response is not defined
Radek9
Profil
Michales:
Protože proměnná response neexistuje. Zkus se nad těmi chybami sám zamyslet. Parametrem té callback funkce je html.
Michales
Profil
Radek9:
Opraveno takto:
        success: function(data) {
            $("#test").append(data);
        }
A zdá se to být funkční. což se mi ale nelíbí je to že se zobrazuje např.14 řádků.
A když kliknu postupně na všech 14 řádků, jsou zobrazené informace ze všech 14 řádků. Měla by se zobrazovat vždy jen ta informace k řádku na který je kliknuto.
Lze to také nějak řešit pomocí javascriptu?
Děkuji za radu a za předešlou pomoc


už vím, místo append má být html ;-)

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: