2016-01-19 279 views
1

我需要檢查是否存在元素(#idname),然後在關閉當前選項卡(或瀏覽器)之前向用戶發送消息。如何檢查元素是否存在?

這裏是我的情況:

if (document.contains(document.getElementById("#idname"))) { 
    window.onbeforeunload = function(evt) { 
     // some code here 
} 

上面的代碼工作爲好,但我的問題是,元素(#idname)在第一個HTML是不存在的,我會後追加到我的HTML頁面加載。現在,這種情況不再有效。有沒有解決方法?

+0

追加元素之後定義處理程序。 – undefined

+0

@Vohuman你的意思是「處理程序」究竟是什麼意思? – Shafizadeh

+0

你應該使用'getElementById(「idname」)'而不是'getElementById(「#idname」)',不是嗎? ''#idname''是jQuery語法。 –

回答

2

你可以簡單地檢查元素的存在在你的onbeforeunload處理程序:

window.onbeforeunload = function(evt) { 
    if (document.getElementById("idname")) { 
     // ... 
    } 
} 
+0

我可以問另一個問題嗎?*(它與上述問題無關,這是一個小問題,它沒有足夠的價值,我問這個SO)* – Shafizadeh

+0

是的,當然 – undefined

+0

感謝*(我的伊朗朋友)* ..!我試圖創建一個小型降價編輯器*(類似SO的textarea)*,[這裏是一個小的演示](http://jsfiddle.net/3g3gf7kq/8/)。只有一個按鈕*(名爲粗體)*,在選定/突出顯示的文本週圍附加了兩顆星** ** – Shafizadeh

2

只是檢查,如果你可以選擇它:

$("#idname").length > 0 

document.getElementById("idname") === null 

你必須做你的函數內部的要求! (見Vohuman的答案)

+0

這只是OP當前代碼的替代方案,它不提供解決方案。 – undefined

+0

是的,@Vohuman是對的,'.length'和'=== null'與'.contains'完全一樣。 – Shafizadeh

+0

你是對的,你的答案是應該解決什麼問題。 –