如何从元素文本/值找到数组元素的id
how to find id of array element from element text/value
我有以下代码。在alert(text)行中,我得到了数组中的元素。我需要算出这个元素张成的空间的id。例如,对于数组中的第二个元素,我需要弄清楚Yellow的id是"test4",因此我可以确定数组中元素的id是test2、test4和test6。我不知道如何从span中的文本/值中获得span id。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript">
function doFunction(){
var myArray = ["Green", "Yellow", "Brown"];
for (i = 0; i < myArray.length; i++) {
text = myArray[i];
alert(text);
}
}
</script>
<title></title>
</head>
<body>
<span id="test1">Red</span><br>
<span id="test2">Green</span><br>
<span id="test3">Blue</span><br>
<span id="test4">Yellow</span><br>
<span id="test5">Orange</span><br>
<span id="test6">Brown</span><br>
<button name="button" onclick="doFunction()">Click Me</button>
</body>
</html>
function doFunction(){
var myArray = ["Green", "Yellow", "Brown"];
var mySpans = document.getElementsByTagName("span");
for (var i = 0; i < mySpans.length; i++) {
if(myArray.indexOf(mySpans[i].innerHTML) > -1){
alert(mySpans[i].id);
}
}
}
小提琴:http://jsfiddle.net/4rZ5h/
使用indexOf,因此您需要一个shiv来支持IE<9
您唯一的实际选择是首先获得跨度列表,例如从querySelectorAll
,然后遍历该列表,查看每个列表的innerHTML
,以查看哪个匹配。
例如,你可以得到这样的列表:
// Find all spans with `id` values starting with "test"
var list = document.querySelectorAll("span[id^=test]");
(这里我使用"属性开始与"选择器,但如果我是你,我会添加一个类的跨度,并使用它代替)
然后循环该列表(在循环中遍历数组中的值)。
var listIndex;
for (listIndex = 0; listIndex < list.length; ++listIndex) {
if (text === list[listIndex].innerHTML) {
// it matches
}
}
所以把这些放在一起:
function doFunction(){
var myArray = ["Green", "Yellow", "Brown"];
var list = document.querySelectorAll("span[id^=test]");
var listIndex, text, i;
for (i = 0; i < myArray.length; i++) {
text = myArray[i];
for (listIndex = 0; listIndex < list.length; ++listIndex) {
if (text === list[listIndex].innerHTML) {
// this span matches
}
}
}
}
旁注:如果你看上面,你会注意到我为i
和text
添加了var
语句。如果没有它们,你就会落入的陷阱,这是最好避免的。
您可以遍历每个span,看看它们是否在您的数组中,如果是,则警告它们的ID。
function doFunction(){
var myArray = ["Green", "Yellow", "Brown"];
// All your spans
var mySpans = document.getElementsByTagName('span');
// Go through each of them
for (var i = 0; i < mySpans.length; i++) {
// See if the value is in the array
var myIndex = myArray.indexOf(mySpans[i].innerHTML);
// If they are
if(myIndex!=-1){
// Alert the text and the id
alert(myArray[myIndex] + ' : ' + mySpans[i].getAttribute('id'));
}
}
}
JS小提琴
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- javascript数组元素是否知道其封闭数组
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 如何在javascript中使用click函数选择数组元素
- 如何在JavaScript中剥离数组元素中的非整数
- 消隐数组元素是否生成自己的属性
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 在Codrops的内容中添加数组元素展开缩略图网格预览
- 将对象数组与id数组进行比较
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 在保持元素一致性的同时旋转数组元素的最佳方式'id
- 如何通过Firebase数据库中的AngularJS在点击时获取数组元素的唯一ID
- 在一个对象的Javascript数组中,如果一个特定的数组元素本身就是一个对象数组,我如何通过名称/ID来定位该元素
- Angularjs-显示基于数组中id存在的元素
- 如何从元素文本/值找到数组元素的id
- 我如何得到Json数组元素一个接一个的jquery上不同的id'
- 将数组元素替换为id标记
- 使用数组元素分配“id=”值返回:TypeError:document.getElementById(..)为null