Javascript 将现有DIV从类更改为ID

Javascript 将现有DIV从类更改为ID,javascript,html,class,Javascript,Html,Class,这可能吗?或者有没有一种方法可以附加到现有的div上并标识它 这是我的密码。我无法使用类使代码正常工作,但当我使用getElementById并将div更改为ID时,我发现确实如此。但是我有一大堆已经发布的东西,所以我需要花很长时间来浏览所有这些帖子并手动将其更改为ID 我是否可以在这种情况下使用JQuery并使其仍能工作?我用我偶然发现的东西试了一下,但没用,所以我把它拿走了。我不记得现在是什么了 <div id="imdb" class="imdb">tt2382396</

这可能吗?或者有没有一种方法可以附加到现有的div上并标识它

这是我的密码。我无法使用类使代码正常工作,但当我使用getElementById并将div更改为ID时,我发现确实如此。但是我有一大堆已经发布的东西,所以我需要花很长时间来浏览所有这些帖子并手动将其更改为ID

我是否可以在这种情况下使用JQuery并使其仍能工作?我用我偶然发现的东西试了一下,但没用,所以我把它拿走了。我不记得现在是什么了

<div id="imdb" class="imdb">tt2382396</div>

<script>
    function imdbdiv() {
        var imdbmain = "http://www.imdb.com/title/";
        var end = "/#overview-top";
        var idnum = document.getElementsByClassName("imdb");
        var newdiv = document.createElement("div");
        var done = "<a href='" + imdbmain + idnum + end + "'>IMDB</a>";
        newdiv.innerHTML = done;

        document.body.appendChild(newdiv);
    }
    window.onload = imdbdiv();
</script>
有人能帮忙吗。我一辈子都搞不清楚这件事


如果您的页面上有许多这样的div,那么可能是这样的:

<div class="imdb">tt2382396</div>
<div class="imdb">tt2382396</div>
<div class="imdb">tt2382396</div>

<script>
    function imdbdiv() {
        var imdbmain = "http://www.imdb.com/title/";
        var end = "/#overview-top";
        var idnums = document.getElementsByClassName("imdb");
        for (var i =0; i < idnums.length; i++) {
            var newdiv = document.createElement("div");
            var done = "<a href='" + imdbmain + idnums[i].innerText + end + "'>IMDB</a>";
            newdiv.innerHTML = done;
            document.body.appendChild(newdiv);
        }            
    }
    window.onload = imdbdiv();
</script>

问题是,您正在追加document.getElementsByClassName返回的集合,而不是在集合中循环元素。您可以通过查看JSFIDLE中链接的href属性来验证这一点。必须循环遍历这些值,然后访问它们的innerHTML属性中的数据

您可以使用document.querySelectorAll获取与特定CSS选择器匹配的所有元素的列表,在您的例子中是.imdb。如果您希望选择具有多个类的元素,这将更加灵活。我已经从下面粘贴了代码


好的,你的问题有点不清楚

我理解您的问题的方式是,您有一大堆具有class属性的div元素,您想要的是简单地将class值复制到div元素的id属性

如果这是正确的,那么在jquery中尝试以下操作:

<script>

$(document).ready(function(){

     $(".imdb").each(function(imdbDiv){
          var classValue = imdbDiv.attr("class");
          imdbDiv.attr("id", classValue);
     });

});

</script>

看起来像XY问题;你在寻找错误的解决方案。如果将类更改为ids需要花费很长时间,那么询问如何解决类问题。getElementsByClassName返回一个集合,是否循环?该代码中没有jQuery。为什么要标记它?getElementsByClassName.var idnum=document.getElementsByClassNameimdb[0];?getElementsByClassNameimdb[0],因为它返回一个对象数组。另外,您正在将字符串与对象imdbmain+idnum连接起来。页面上只有一个类实例。但这是完美的!非常感谢。为我的目的工作得更好。谢谢唯一的问题是div没有在我放置脚本的位置生成,我需要它在指定div中的特定位置。在这种情况下,请将document.body.appendChild行替换为document.querySelector'mySpecifiedDiv'。appendChild。您可以使用所需容器的正确选择器替换mySpecifiedDiv。请注意,document.querySelector返回一个您可以直接访问的元素,document.querySelector返回一个HTML元素列表,您必须迭代这些元素才能访问这些元素。
function imdbdiv() {
    var imdbMain = "http://www.imdb.com/title/",
        end = "/#overview-top",
        imdbValueDivs = document.querySelectorAll('.imdb'),
        length = imdbValueDivs.length,
        // Iterator values
        i,
        newDiv,
        newLink;

    // Loop over all of your link value containers
    for (i = 0; i < length; i++) {
        // Create the container
        newDiv = document.createElement('div');

        // Create the new link
        newLink = document.createElement('a');
        newLink.href = imdbMain + imdbValueDivs[i].innerHTML + end;
        newLink.innerHTML = "My favorite film";

        // Add the link to the container,
        // and add the container to the body
        newDiv.appendChild(newLink);
        document.body.appendChild(newDiv);
    }
}
window.onload = imdbdiv();
<script>

$(document).ready(function(){

     $(".imdb").each(function(imdbDiv){
          var classValue = imdbDiv.attr("class");
          imdbDiv.attr("id", classValue);
     });

});

</script>