2017-10-21 152 views
1

我正在测试一行代码,它检查一个变量是否为空。如果它空出一个提示弹出。但即使变量有些东西,提示仍然弹出。javascript - 为什么这个if语句不起作用?

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>

代码工作,它只是之后变量被设置在加载页面之前提示再次弹出。

+6

你的'if'正在测试两个不同的变量。变量在哪里申报?无论如何,'site'在函数内部是本地声明的,所以在'if'条件被评估的地方它将是'undefined','=='认为'undefined'和'null'相等,所以'if情况总是如此。 – nnnnnn

回答

1

这是因为变量未定义(我们没有设置它在任何地方),if块总是运行。

而且,如果网站变量似乎myFunction的范围定义 -

JavaScript函数内声明的变量,成为当地的 功能

理想的方式是检查document.cookie而不是变量 -

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(); 

Check它在JSFiddle

+0

感谢帮助! – Blackmagyk

0

您的if语句计算两个变量,其中只有一个必须为真,以使if语句为真。

相关问题