我正在尝试将id分配给页面上的div,div不是动态创建的,而是一次写在页面上,我需要将随机id分配给我页面上存在的div。 尝试过很多东西,但无法得到解决方案..在html页面上,div存在于名为demo的类中,而div已经分配了id = mydiv。然后调用脚本并将divs id从mydiv更改为随机数..我无法将+1添加到下一个div。 尝试jquery遍历如下所示nextall(),但它不会将+1添加到新div ..
function handledivIds() {
var e = $(".demo #mydiv");
var t = randomNumber();
var n = "div-",t;
e.attr("id", n);
e.nextall().attr("id", n+1)
}
function randomNumber() {
return '' + new Date().getTime();
}
答案 0 :(得分:2)
尝试更改此
var e = $(".demo #mydiv");
到这个
var e = $(".demo div");
ID仅适用于一个元素,因此#myDiv
只会返回div
元素之一......永远。
还包括Jai的答案。
答案 1 :(得分:1)
n+1
无法使用字符串,所有下一个div
将与.nextAll()
获得相同的ID。+
- var n = "div-"+t;
.each()
来迭代div
个元素。试试这个,
function handledivIds() {
var e = $(".demo div");
var t = randomNumber();
e.each(function (index) {
$(this).attr("id", "div-" + (t + index))
});
}
function randomNumber() {
return '' + new Date().getTime();
}
答案 2 :(得分:0)
改变这个:
var n = "div-",t;
到此:
var n = "div-";
您可能希望在此处以及在nextAll()
附加1
字符串的字符串中连接字符串。
或者您可以将功能更新为:
function handledivIds() {
$(".demo div").each(function(i, it){
$(this).attr('id', "div-"+$(this).index()); // assigns unique ids per div
});
}
答案 3 :(得分:0)
首先 - 使用日期不是随机的。它将提供可预测的增加值。如果您需要一些真正随机的东西,那么最好为DIV ID服务器端分配一个实际的随机数生成器。如果您可以使用伪随机数,请使用Math.random而不是时间。为了保证唯一性,您可以同时使用时间和随机数。包含时间,因为它单调增加,将保证唯一值,而伪随机数将给它随机质量。如果您需要真正随机,请使用加密强大的随机数生成器服务器端。
其次,您的原始div不能都具有相同的起始ID。最好给他们一个类服务器端,然后使用该类来识别它们。
<div class="needs-random-id"></div>
最后,nextAll
将相同的属性应用于所有匹配的元素。您可能想要使用each
var max = 9007199254740990;
var min = 1;
$('div.needs-random-id').each(function() {
var time = new Date().getTime();
var idValue = 'div-'
+ time + '-'
+ Math.floor(Math.random() * max) + min;
$(this).attr('id', idValue);
});