Uncaught TypeError: Cannot set property innerHTML of null
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
evident
- Mesaje: 168
Uncaught TypeError: Cannot set property innerHTML of null
Am scriptul
Cod: Selectaţi tot
<script>
function blockToggle(type,blockee,elem){
var conf = confirm("Press OK to confirm the '"+type+"' action on user <?php echo $u; ?>.");
if(conf != true){
return false;
}
var elem = document.getElementById(elem);
elem.innerHTML = 'please wait ...';
var ajax = ajaxObj("POST", "includes/block_system.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText == "blocked_ok"){
elem.innerHTML = '<button id="update_button" class="btn btn-primary" style="width:49%" onclick="blockToggle(\'unblock\',\'<?php echo $u; ?>\',\'blockBtn\')">Unblock User</button>';
} else if(ajax.responseText == "unblocked_ok"){
elem.innerHTML = '<button id="update_button" class="btn btn-primary" style="width:49%" onclick="blockToggle(\'block\',\'<?php echo $u; ?>\',\'blockBtn\')">Block User</button>';
} else {
alert(ajax.responseText);
elem.innerHTML = 'Try again later';
}
}
}
ajax.send("type="+type+"&blockee="+blockee);
}
</script>
Primesc eroarea:
Cod: Selectaţi tot
Uncaught TypeError: Cannot set property 'innerHTML' of null
In linia:
MarPlo
Mesaje: 4343
Salut
Dupa cum spune textul erorii, nu ai in pagina un element HTML cu id-ul transmis prin argumenul "elem" al functiei blockToggle() cand o accesezi.
Vezi partea de cod unde e accesata prima data acea functie si ce id e transmis pentru parametru "elem".
evident
Mesaje: 168
Cod: Selectaţi tot
<button id="update_button" class="btn btn-primary" style="width:49%" onclick="blockToggle(\'unblock\',\''.$u.'\',\'blockBtn\')">Deblocheaza</button>
MarPlo
Mesaje: 4343
Daca butonul cu codul postat e direct in pagina, cred ca acesta reprezinta cel prin care e apelata functia la clic pe el.
Al treilea parametru al acelei functii e pentru id-ul unui element din pagina, si, conform apelarii ei, argumentul 3 (id-ul transmis) e "blockBtn".
Ai un element html in pagina cu id="blockBtn"?
- Adauga un: alert(elem); in acea functie, inainte de linia de cod cu eroarea, sa vezi ce ID afiseaza, apoi verifica in sursa paginii daca e un element cu acel ID.
evident
Mesaje: 168
am pus acel alert si imi zice null
MarPlo
Mesaje: 4343
Daca raspunsul e "null" inseamna ca in documentul html nu ai acel element cand se executa functia. Ori il adaugi in codul html, ori eviti eroarea folosind:
- ca sa aplice innerHTML doar daca elementul exista.