2011-04-01 17 views
9

對此沒有多少運氣。我試圖確定一個var是不是空的。如何檢查var是不是空的JavaScript?

$('#content').mouseup(function() { 

    var selection = getSelected(); 

    if (typeof(selection) !=='undefined') { 
     alert(selection); 
    } 
}); 

這是什麼東西做的是抓住了用戶選擇的任何文本 - 但它表明,即使用戶只需鼠標鬆開對股利空警報。

+1

什麼是'getSelected()'函數? – 2011-04-01 23:00:11

+0

如果(選擇){} – 2011-04-01 23:01:12

+0

getSelected()來自http://stackoverflow.com/questions/5517260/how-to-have-a-popup-after-selecting-text – Mike 2011-04-02 00:25:21

回答

7

您的代碼是用於檢測未定義的值,這意味着該函數總是返回某種值,即使沒有選擇完全準確。

例如,如果該函數返回一個選擇對象(如window.getSelection功能),你檢查isCollapsed屬性看,如果選擇爲空:

if (!selection.isCollapsed) ... 
+0

它的工作原理,謝謝! – Mike 2011-04-02 00:28:31

+0

@Mike:我擔心它只會在某些瀏覽器中以這種方式工作。您正在使用的函數根據瀏覽器返回不同的內容,包括對象,字符串或布爾值。該函數應該被重寫以返回一致的結果,否則將很難使用。 – Guffa 2011-04-02 00:59:24

+0

@Mike:由於缺乏可找到的函數的質量而受到影響,我將一個可以返回一致結果的替代方法放在一起:http://blog.guffa。COM/2011/04 /獲取選定文本-A-更好的路/ – Guffa 2011-04-02 12:36:04

15

只是說:

if (selection) { 
    alert(selection); 
} 

如果成員被定義JavaScript中的簡單的真/假測試返回true,非空非假的,非空字符串,或不爲零。

此外,在Javascript中,東西可以等於值undefined或實際上未定義(意味着,不存在這樣的命名對象)。例如

var x = undefined; 
alert(x===undefined); /* true; */ 
alert(x); /* false */ 
x=1; 
alert(x); /* true */ 

alert(y===undefined); /* reference error - there's nothing called y */ 
alert(y); /* reference error */ 
alert(typeof y === "undefined"); /* true */ 

如下注意事項的意見,如果你不知道的東西,即使在所有的存在,你應該測試首先使用typeof

+0

+1解釋它爲什麼起作用 – drudge 2011-04-01 23:04:31

+0

應該注意的是,如果變量沒有被聲明,這將失敗;它會引發一個'ReferenceError'。如果你需要確保變量存在*和*它有一些真值:'if(typeof selection!=='undefined'&& selection)...' – Reid 2011-04-01 23:15:03

+0

True'nuf - 在OP的Q中,他明確定義'選擇' ,所以我簡化了,但你的筆記毫無疑問是這個知識基礎的重要組成部分。其實我認爲我的答案在我說「定義」時可能會有點混亂。現實是令人困惑的,因爲某些東西可能實際上是未定義的,或等於'未定義'。 – 2011-04-01 23:18:05

2

,你可以簡單地使用:

if (selection) { 
    alert(selection); 
} 
+1

它不工作。它仍然會彈出一個空白的警報框。 – Mike 2011-04-02 00:23:54

+0

當var是'undefined'時它工作嗎? – Thamaraiselvam 2015-05-07 04:47:25

相關問題