2017-10-21 15 views
1

Je teste une ligne de code où elle vérifie une variable si elle est vide ou non. Si c'est vide une invite apparaît. Mais même si la variable a quelque chose, l'invite apparaît toujours.javascript - Pourquoi cette instruction if ne fonctionne pas?

function myFunction(){ 
 
    
 
if (site == null || variable == undefined) { 
 
    var site = prompt("Please enter a valid url:", "http://"); 
 
    document.cookie = 'Your bookmark is: '+ site; 
 
    alert(unescape(document.cookie)); 
 
\t document.getElementById("p1").innerHTML = '<a class="txt2" href="' + site + '" target="myframe">' + site + '</a>'; 
 
} 
 
    
 
else { 
 
    alert('yey its working'); 
 
} 
 
}
<a class="txt2" id="p1" onclick="myFunction()">Button</a>

Le code fonctionne, il est juste après la variable est définie l'invite apparaît à nouveau avant de charger la page.

+6

Votre 'if' teste deux variables différentes. Où 'variable' est-il déclaré? Quoi qu'il en soit, 'site' est déclaré localement à l'intérieur de la fonction, donc il sera' undefined' au point où la condition 'if' est évaluée, et' == 'considère' undefined' et 'null' égaux, donc' si 'la condition est toujours vraie. – nnnnnn

Répondre

1

C'est parce que la variable est indéfinie (nous ne la définissons nulle part), le bloc if est toujours exécuté.

En outre, si variable site semble défini dans le cadre de maFonction -

Les variables déclarées dans une fonction JavaScript, devenir LOCAL à la fonction

idéal est de vérifier document.cookie au lieu des variables -

function myFunction(){ 

if ( document.cookie == '') { 
    var site = prompt("Please enter a valid url:", "http://"); 
    document.cookie = 'Your bookmark is: '+ site; 
    alert(unescape(document.cookie)); 
    document.getElementById("p1").innerHTML = '<a class="txt2" href="' + site + '" target="myframe">' + site + '</a>'; 
} 

else { 
    alert('yey its working'); 
} 
} 

myFunction(); 

Vérifiez cela fonctionne dans JSFiddle

+0

merci qui a aidé! – Blackmagyk

0

Votre instruction if évalue deux variables dont une seule doit être vraie pour que l'instruction if soit vraie.