2013-05-15 52 views
1

可以存在任意数量的元素,并使用以下ID。通过元素循环查找特定ID

<div id="my-div-1">Title 1</div> 
<div id="my-div-2">Title 2</div> 
<div id="my-div-3">Title 3</div> 
<div id="my-div-4">Title 4</div> 

我想遍历这些元素来查看ID末尾的数字是否与变量中的数字匹配。

这是我至今认为这是行不通的:

var myNum = 3 
var findNum = /[\d]+/; 
var findElement = document.getElementById('my-div-' + findNum); 
for(i=0; i<findElement; i++) { 
    if (myNum = findNum) { 
     console.log('Success! myNum = ' + myNum + 
        ' and findNum = ' + findNum + 
        ' and findElement = ' + findElement); 
    } 
    else { 
     console.log('Fail! myNum = ' + myNum + 
        ' and findNum = ' + findNum + 
        ' and findElement = ' + findElement); 
    } 
} 
+0

只是做'变量$元= $('# myNum ='+ myNum)' –

+0

'if(myNum = findNum){'< - typo应该只有==和getElementByID返回单个元素,为什么循环? – epascarello

+0

当你的代码不使用任何代码时,为什么你的问题被标记为“jquery”? – Blazemonger

回答

4

您可以直接引用的元素,像这样:

非jQuery的方法:

var myNum = 3; 
var el = document.getElementById('my-div-' + myNum); 
if (!el) { 
    alert("Fail"); 
} else { 
    alert("Success"); 
} 

工作例如:http://jsfiddle.net/EtZxh/4/

jQuery的方法:

如果你想使用jQuery只需替换为fo llowing:

var myNum = 5; 
var el = $('#my-div-' + myNum); 
if (el.size() == 0) { 
    alert("Fail"); 
} else { 
    alert("Success"); 
} 

工作例如:http://jsfiddle.net/EtZxh/

+0

感谢您同时显示Non jQuery和jQuery。我误解了我的问题,现在看到我不需要循环。谢谢! – Mdd

+2

如果getElementById未找到元素,则返回null,而不是undefined。无论哪种方式,您都不需要明确检查。元素是truthy和'null','undefined','0','false'等是虚假的。 – Blender

+0

@Blender - 不错的地方。我已经更新了示例以避免混淆。 – Maloric

1

getElementById不返回多个元素。它只有一个返回:

var elem = document.getElementById('my-div-' + number); 

if (elem) { 
    // elem exists 
} 

和jQuery:

if ($('#my-div-' + number).length > 0) { 
    // elem exists 
} 
+0

谢谢!我以为我会需要一个循环,但这很好。 – Mdd

6

使用jQuery你可以用下面的选择它:

var id = 4; 
var $element = $("#my-div-" + id); 

其中ID是保存数的变量。

0
var myNum = 3; 

$('div[id^="my-div-"]').each(function() { 
    console.log("hello"); 
    if(myNum === parseInt($(this).attr('id').replace('my-div-',''), 10)) { 
     alert("found => " + $(this).attr('id')); 
    } else { 
     // do else 
    } 
}); 

DEMO

0

你可以做这样的事情在jQuery的

var num = 3; 
$("div[id^='my-div-']").each(function(){ 
    var id = this.id; 
    if(id.slice(-1) === num){ 
     alert("Success: " +id); 
    }else{ 
     alert("Fail : " +id) 
    } 
});