2010-11-02 8 views
1

je wan't pouvoir « bascule » un div en utilisant jquery par une fonction mais il me donnebascule jquery() ne fonctionne pas avec la variable

« Uncaught TypeError: Impossible de lire la propriété « defaultView » undefined »

dans le débogueur chrome. voici mon code

function hide(id){ 
$(id).toggle(); 
} 

J'ai aussi essayé

if (document.getElementById(id).style.display=="none"){ 
    document.getElementById(id).style.display="block"; 
} 
else if (document.getElementById(id).style.display=="block"){ 
    document.getElementById(id).style.display="none"; 
} 
console.log(document.getElementById(id)); 
console.log(id); 
return document.getElementById(id).style.display; 

et je reçois une erreur qui dit

"Uncaught TypeError: Impossible de lire la propriété 'style' de null"

Plus d'infos:

J'appelle le hide() depuis le HTML, je saisis le HTML en utilisant

js

est ici le code de base

function inputHtml(id){ 
var div = document.createElement("div"); 
div.innerHTML = '<div id="'+id+'"><div onclick="hide('+id+')">hide</div></div>'; 
main.appendChild(div); 
} 
+0

avez-vous essayé de sortir "id" pour voir s'il y a une valeur dedans, et c'est ce que vous attendez d'elle. jquery s'attend à "# " où getElementById s'attend à "". –

+1

comment appelez-vous la fonction 'hide()' dans votre code HTML? – drudge

+0

J'ai ajouté plus d'informations pour répondre à la question de jnpcl –

Répondre

0

Vous essayez de basculer d'un identifiant qui n'existe pas.

Mais je suppose que le console.log(document.getElementById(id)); le montrerait déjà.

+0

Je suis sûr que l'ID sort –

+0

@Altimus_fenn: s'il vous plaît vérifier à nouveau si l'ID existe et qu'il n'y a pas de fautes de frappe. Sauf si vous avez écrasé 'document.getElementById', vous obtiendrez toujours l'objet avec. Je n'ai pas d'autre explication pour l'erreur: 'Uncaught TypeError: Impossible de lire la propriété 'style' de null' – Wolph

0

Bien sûr, l'ID existe-t-il?

Par ailleurs, votre fonction consiste à sélectionner le nom de la balise, et non par ID:

function hide(id){ 
    $('#' + id).toggle(); 
} 
+0

Oui l'ID existe, j'ai essayé '$ (' # '+ id) .toggle();' et obtenu l'erreur "Erreur de syntaxe non interceptée, expression non reconnue: # [objet objet]" –

0

Tout d'abord, votre code devrait ressembler à ceci:

function hide(id){ 
    $("#"+id).toggle(); 
} 

Ou ceci:

function hide(id){ 
    $(document.getElementById(id)).toggle(); 
} 

Maintenant le problème réel: votre id paramètre passé en est un objet, c'est la seule chose qui avait abouti à l'erreur que vous obtenez avec la première version ci-dessus:

Uncaught Syntax error, unrecognized expression: #[object Object] 

id est d'obtenir un .toString() lorsque vous concaténer avec "#", ce qui "#[object Object]". Votre id paramètre doit être une chaîne, pas un objet.