将现有DIV从CLASS更改为ID

时间:2014-07-31 17:13:15

标签: javascript html class

这可能吗?或者有没有办法对现有的div进行处理和识别?

这是我的代码。我无法使用类来使用代码,但是当我使用getElementById并将div更改为ID时,我发现它确实存在。但是我已经发布了大量的内容,因此需要花费很长时间才能完成所有帖子并手动将其更改为ID。

我可以将JQuery纳入其中并仍然有效吗?我试着用我偶然发现的东西,但它没有用,所以我把它删除了。我不记得它现在是什么。 :S

<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>

任何人都可以提供帮助。我不能为我的生活弄清楚这一点。

JsFiddle

3 个答案:

答案 0 :(得分:0)

如果你的网页上有很多这样的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>

请参阅jsfiddle

<强>更新

以下字符串不正确:

window.onload = imdbdiv;

答案 1 :(得分:0)

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

您可以使用document.querySelectorAll获取与特定CSS选择器匹配的所有元素的列表,例如.imdb。如果您想要选择具有多个类的元素,则更灵活。我已粘贴下面updated jsFiddle的代码。

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();

答案 2 :(得分:0)

好的,所以你的问题有点不清楚。

我理解你的问题的方法是你有一大堆带有class属性的div元素,你想要的只是将类值复制到div元素的id属性。

如果这是正确的,那么用jquery尝试这样的事情:

<script>

$(document).ready(function(){

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

});

</script>