如何检测javascript中元素的存在?

时间:2012-07-30 09:27:45

标签: javascript jquery

var newHead = '<div id="head'+text+'"></div>';
var header = "head"+text;
if (document.getElementById(header) == undefined) {
        //alert(document.getElementById("head"+text));
        $("#result-job").append(newHead);
        var result = '<div id="div' + dataSplit[0] + '"><input type="radio" checked="checked" class="choosenJob" name="rdb_job" value="' + dataSplit[0] + '" id="' + dataSplit[0] + '" /><label for="' + dataSplit[0] + '">' + dataSplit[1] + '</label><br /></div>';
        $("div#" + header).append(result);
    } else {
        var result = '<div id="div' + dataSplit[0] + '"><input type="radio" checked="checked" class="choosenJob" name="rdb_job" value="' + dataSplit[0] + '" id="' + dataSplit[0] + '" /><label for="' + dataSplit[0] + '">' + dataSplit[1] + '</label><br /></div>';
        $("div#" + header).append(result);
    }

这些脚本可以运行良好吗? 我想在结果div中添加一些新元素(div) 但我的剧本没有用

小提琴模拟:http://jsfiddle.net/86kH4/5/

6 个答案:

答案 0 :(得分:2)

替换

if (document.getElementById(header) == undefined) {

if ($("#" + header).length == 0) {

答案 1 :(得分:0)

你必须在你的id周围添加一些引号,它会正常工作。另外,删除== undefined,让Javascript检查一下:

if (document.getElementById("header")) {
   /* treatment */
} else {
   /* treatment */
}

答案 2 :(得分:0)

http://jsfiddle.net/Q98mv/ - 请将您的代码段与此代码段进行比较,您会发现问题所在

$('#chk1').click(function(){
    var ada = "asd";  //ada here will be my dynamic parameters                 
    var neww= '<div id="baru'+ada+'"></div>';

    if($('#baru'+ada).length==0){
        $("#asd").append(neww);
    }else{
        $("#baru"+ada).append("Hellow<br>");
    }
})​;

答案 3 :(得分:0)

这里你应该使用jquery函数“live” 例如:

$("div#" + header).live().append(result);

添加元素时附加创建的元素~~使用此函数 希望它有用~~~

答案 4 :(得分:0)

正如我在评论中提到的,你的小提琴有一个语法错误,这就是为什么它“不起作用”。修复错误后,您将获得预期的行为:http://jsfiddle.net/fkling/86kH4/28/


,您可以使用

document.getElementById(header) == undefined

测试是否存在header中包含ID的元素。

如果不存在此类元素,getElementById将返回nullnull == undefined将返回true。考虑到这一点,如果您与null进行比较,那将更加正确:

document.getElementById(header) === null

那就是说,既然你正在使用jQuery,我会尝试保持一致,而不是将它与简单的DOM方法混合使用。每个jQuery对象都有一个length属性,其中包含所选元素的数量。所以jQuery的等价物是:

$('#' + header).length === 0

答案 5 :(得分:-1)

将此if (document.getElementById(header) == undefined) {替换为if ($('#header') == undefined) {它可能正常工作。顺便说一句,你错过了代码中标题的引号。