在JavaScript或jQuery中动态设置div id

在JavaScript或jQuery中动态设置div id,javascript,jquery,Javascript,Jquery,如何动态设置div id?这是我的密码: <div id="q1"></div> <div id="q2"></div> <div id="q3"></div> <div id="q4"></div> <div id="q5"></div> 但它是说对象为null或未定义 谢谢。 chakri.$('#q1').attr('id','q4')我认为它应该能工作 编辑: 如果仍

如何动态设置div id?这是我的密码:

<div id="q1"></div>
<div id="q2"></div>
<div id="q3"></div>
<div id="q4"></div>
<div id="q5"></div>
但它是说对象为null或未定义

谢谢。 chakri.

$('#q1').attr('id','q4')
我认为它应该能工作

编辑:

如果仍然不起作用,请尝试将其置于
之前:


$(文档).ready(函数(){
$('q1').attr('id','q4'))
});

在jQuery中,您可以执行以下操作:

$('#q4').attr('id', 'q1');

但是,请注意,这将导致标记无效,因为在文档中不能多次使用同一ID

您的代码很好,这意味着如果失败,您可能在DOM中定义这些元素之前运行JavaScript。尝试将脚本块移动到这些元素的下方(例如,页面底部),或者将代码放在DOM加载/就绪处理程序中。
编辑:不知道为什么这会被否决,但不管怎样。如果您希望在等待DOM就绪事件时在jQuery中执行此操作,则应该可以:

$(function() {
    $('#q4').attr('id', 'q1');
    $('#q2').attr('id', 'q5');
});
请注意,这里重要的部分不是在jQuery或vanilla JavaScript中设置id,重要的部分是我们在等待DOM准备好进行操作。

使用jQuery:

逐个动态设置:

var idCount = 1;
$('div').each(function() {
   $(this).attr('id', 'q' + idCount);
   idCount++;
});
要重新安排所需内容,请执行以下操作:

$('div#q4').attr('id', 'q1');
$('div#q2').attr('id', 'q5');

您的代码运行良好。除此之外,之后您将有两个具有相同id的div。因此,如果再次尝试获取q1,您将遇到问题。

试试这个

var divid=document.getElementById('q1')


divid.id='q5'

首先,您给元素的id是一个以前已经给过某个元素的id,这不是正确的做法,您的DOM中不能有多个id。无论如何,代码应该是这样的

    var element = document.getElementById('q4');
    element.setAttribute('id', 'q7');
    if(document.getElementById('q7').innerHTML = "All is well")
          alert(document.getElementById('q7').innerHTML);    //to check if the new id has been set correctly
JavaScript中的Fiddle

在jQuery中

页面中的JavaScript代码在哪里?您当前的代码是正确的。它没有什么问题:“现在我想把q4分区id设置为q1…”只需确保将原始的
q1
id更改为其他id,这样你就不会重复id。我讨厌成为“那个家伙”,并告诉你查看我的帖子,但大多数答案都解决了“jQuery不够”的问题,这不是这里的问题。真正的问题是,您试图在DOM准备就绪之前对其进行操作。我之所以指出这一点,是因为出于某种原因,我的帖子被否决了几次,可能很容易被忽视……是的:
我如何在JavaScript或jQuery中做到这一点。
的确如此<代码>如何在javascript或jquery中做到这一点。我的错-不知何故我错过了(+1)。我也会更新问题的标签。这完全没有意义。。。海报作品提供的当前代码。。。。因此,这也无济于事。问题出在代码的其他地方。@Ernestas-在第二个代码段中,您一直在等待
就绪
事件,所以他把它放在哪里并不重要,只要是在他链接到jQuery之后。另外,在这两个示例中,您都将ID设置为#'前缀,我认为这是无意的。
$('div#q4').attr('id', 'q1');
$('div#q2').attr('id', 'q5');
    var element = document.getElementById('q4');
    element.setAttribute('id', 'q7');
    if(document.getElementById('q7').innerHTML = "All is well")
          alert(document.getElementById('q7').innerHTML);    //to check if the new id has been set correctly
var yourElement = document.getElementById('originalID');
yourElement.setAttribute('id', 'yourNewID');
$('#originalID').attr('id', 'yourNewID');