2017-10-21 144 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語句爲真。

相關問題