给所有元素一个匹配数组内容的ID

give all elements an ID of matched content from an array

本文关键字:数组 ID 一个 元素      更新时间:2023-09-26

我需要给所有<span>标签一个id,无论它们的内容与array1匹配。

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也不懂数组。

首先获取标签名称为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;

这将为所有span提供各自的id。

试试这个,

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]);
    })
}

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

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]);
}

你可以这样做:

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

检查这个文件

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

使用jquery可以这样做:

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

或者如果span已经用HTML填充(不确定它们将如何,只是说)

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