2016-01-19 232 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

你是对的,你的答案是应该解决什么问题。 –