2013-05-15 76 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) 
    } 
});