使用函数参数Javascript创建元素

时间:2017-04-14 20:07:13

标签: javascript jquery html dynamic

第一次问问问题,对我说好话。我想我已经彻底查看了Stack,以免问一个重复的问题。

我有一个功能。

function createDivs(num) {
    for(let inc = 0; inc < num; inc++) {
    let div = document.createElement('div'),
        tab_content = document.getElementsByClassName('tab-content');

        div.className = 'classname';
        div.id = `number-${inc}`;
        div.innerHTML = 'did it work?';
        tab_content.innerHTML = div;
    }
}

HTML只是

<div class="tab-content">
    <script>
       createDivs(4);
    </script>
</div>

我尝试过其他方法,比如

let tab_content = document.getElementsByClassName('tab-content');

tab_content.innerHTML = '<div class="classname" id=`number-${inc}`>did it work?</div>';

以及'' ""和``的其他变体,但两者都不起作用。

我也尝试了tab_content.appendChild(div);,但也没有用。

实际上,这是我的实际代码的降级,因为我正在创建大量需要内容的元素,但我甚至无法让这一点工作。如果我删除for循环它甚至不起作用。我也确实看到了这个post,因此我尝试了appendChild,但同样也没有用。

3 个答案:

答案 0 :(得分:0)

您的代码中有一些拼写错误。在循环中使用inc++代替innerHtml。未将tab_content作为数组访问并使用appendChild而不是<!DOCTYPE html> <html> <head> <script type="text/javascript"> function createDivs(num) { for(let inc = 0; inc < num; inc++) { let div = document.createElement('div'), tab_content = document.getElementsByClassName('tab-content')[0]; div.className = 'classname'; div.id = `number-${inc}`; div.innerHTML = 'did it work?'; tab_content.appendChild(div); } } </script> </head> <body> <div class="tab-content"> <script> createDivs(4); </script> </div> </body> </html>。固定代码如下。

&#13;
&#13;
class Song():
def __init__(self, song_dict={}):
    self.trackName = song_dict["trackName"]
    self.trackNumber = song_dict["trackNumber"]
    self.genre = song_dict["primaryGenreName"]["alternative"]
def __str__(self):

return "{} by {}".format(self.trackName,self.trackNumber,self.genre)
&#13;
&#13;
&#13;

答案 1 :(得分:0)

在我看来,你想要不设置innerHTML,但实际上要追加几个子节点。除此之外,您的代码中存在一些错误(getElementsByClassName)返回一个类似于数组的对象,而不仅仅是一个对象,因此您需要选择一个将div添加到。

此外,您在循环inc中将i变量命名为i,因此它实际上不会增加​​循环。看看下面重写的代码,看看它是否能满足您的需求。

function createDivs(num) {
    for(let inc = 0; inc < num; inc++) {
    let div = document.createElement('div'),
        tab_content = document.getElementsByClassName('tab-content');

        div.className = 'classname';
        div.id = `number-${inc}`;
        div.innerHTML = 'did it work?';
        tab_content[0].appendChild(div);
    }
}
(function(){createDivs(4)})()
<div class="tab-content">

</div>

答案 2 :(得分:0)

你的for循环不会增加其控制变量。将其更改为

   for(let inc = 0; inc < num; inc++) {

getElementsByClassName返回一个类似于object的数组,而不是单个元素。所以你需要把它改成

   tab_content = document.getElementsByClassName('tab-content')[0];