为所有元素提供数组中匹配内容的ID

时间:2014-06-23 17:17:48

标签: javascript jquery arrays

我需要为所有<span>标记提供其内容与array1相匹配的ID。

array1 = ["155","80","200","123"];

<span>155</span>
<span>80</span>
<span>200</span>
<span>123</span>

最终结果是:

<span id="155">155</span>
<span id="80">80</span>
<span id="200">200</span>
<span id="123">123</span>

这是我能鼓起的最好的事情:

var arr = $('span:contains(array1[i])');
for (var i = 0; i < arr.length; i++) {
    arr[i].id = i;
}

我对JavaScript或数组都不熟悉。 感谢任何帮助,谢谢。

6 个答案:

答案 0 :(得分:0)

试试这个,

array1 = ["155","80","200","123"];

for(var i = 0;i < array1.length; i++) {
    $("span:contains("+ array1[i] +")").each(function(ind, val){
        if($(val).html() == array1[i])
            $(val).attr("id", array1[i]);
    })
}

答案 1 :(得分:0)

这似乎是一件奇怪的事情,你应该重新考虑它并找到一个更好的方法,但这会做你想要的:

array1 = ["155","80","200","123"];

for (var i = 0; i < array1.length; i++) {
    var arr = $('span:contains(' + array1[i] + ')').first();
    console.log(arr);
    arr.attr("id",array1[i]);
}

答案 2 :(得分:0)

选中此jsfiddle

$(function(){
    var arr = $('#spans').find('span');
    for (var i = 0; i < arr.length; i++) {
        $(arr[i]).attr('id',i);
    }
})

答案 3 :(得分:0)

你可以这样做:

var array1 = ["155","80","200","123"];

$("span").filter(function() { 
    var idx = $.inArray( $.trim($(this).text()), array1);
    if( idx > -1 ) {
        return $(this).attr("id", array1[idx]);
    }
});

演示:: jsFiddle

答案 4 :(得分:0)

首先获取标记名为span的所有元素:

var s = document.getElementsByTagName('span');
var len = s.length;

现在,在for循环中,为每个元素分配ID:

for(var i=0; i<len; i++) {
    var inner = s[i].innerHTML;
    s[i].id = inner;

这将为所有跨度提供相应的ID。

答案 5 :(得分:-1)

使用jquery你可以这样做:

for (var i = 0; i < array1.length; i++) {
    $(this).attr("id",array1[i]);    
}

如果跨度已经填充了HTML(不确定它们将如何,只是说)

$( "span" ).each(function(){
    $(this).attr("id") = $(this).html();
})