Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JS创建动态输入类型_Javascript - Fatal编程技术网

Javascript 使用JS创建动态输入类型

Javascript 使用JS创建动态输入类型,javascript,Javascript,有人能告诉我为什么这不起作用吗 我的目标是创建一个列表输入类型,并为每个类型分配一个类 var container = document.createElement('div'); container.setAttribute('id','Maincontainer'); document.body.append(container); var count = ['class1','class2','class3','class4','class5']; var i; for( i = 0;

有人能告诉我为什么这不起作用吗

我的目标是创建一个列表输入类型,并为每个类型分配一个类

var container = document.createElement('div');
container.setAttribute('id','Maincontainer');
document.body.append(container);


var count = ['class1','class2','class3','class4','class5'];
var i;
for( i = 0; i <= count.length; i++){
    container.innerHTML += '<input>';
}


count.forEach( function(){
    count = document.getElementsByTagName('input');
    count.setAttribute('class',i);
});
var container=document.createElement('div');
setAttribute('id','Maincontainer');
document.body.append(容器);
变量计数=['class1','class2','class3','class4','class5'];
var i;

对于(i=0;i您想将
class
count
数组分配给每个输入元素,对吗

然后在
forEach
的回调中,您需要分别为类名和相应的输入元素提供
元素
索引

此外,
document.getElementsByTagName
是一个数组,因此您需要知道要通过索引修改哪个输入元素,并检查
forEach
语义

您正在传递一个从最后一个for循环使用的
i
,它的值始终是第一个循环离开时的值,该值等于输入元素数减去1

var inputElements = document.getElementsByTagName('input');

count.forEach(function(className, index){
    count = inputElements[index];
    count.setAttribute('class',className);
});
var container=document.createElement('div');
setAttribute('id','Maincontainer');
document.body.append(容器);
变量计数=['class1','class2','class3','class4','class5'];
var i;

对于(i=0;i您想将
class
count
数组分配给每个输入元素,对吗

然后在
forEach
的回调中,您需要分别为类名和相应的输入元素提供
元素
索引

此外,
document.getElementsByTagName
是一个数组,因此您需要知道要通过索引修改哪个输入元素,并检查
forEach
语义

您正在传递一个从最后一个for循环使用的
i
,它的值始终是第一个循环离开时的值,该值等于输入元素数减去1

var inputElements = document.getElementsByTagName('input');

count.forEach(function(className, index){
    count = inputElements[index];
    count.setAttribute('class',className);
});
var container=document.createElement('div');
setAttribute('id','Maincontainer');
document.body.append(容器);
变量计数=['class1','class2','class3','class4','class5'];
var i;
对于(i=0;i
var container=document.createElement('div');
setAttribute('id','Maincontainer');
document.body.append(容器);
变量计数=['class1','class2','class3','class4','class5'];
var i;
对于(i=0;i
var container=document.createElement('div');
setAttribute('id','Maincontainer');
document.body.append(容器);
变量计数=['class1','class2','class3','class4','class5'];
var i;

对于(i=0;i我认为下一个代码是一个好方法:

let container = document.createElement('div');
container.setAttribute('id','Maincontainer');
let input = document.createElement('input');
let count = ['class1','class2','class3','class4','class5'];

for(let i = 0; i < count.length; i++){
  let cloneInput = input.cloneNode();
  cloneInput.classList.add(count[i]);
  container.appendChild(cloneInput);  
}

document.body.append(container);
let container=document.createElement('div');
setAttribute('id','Maincontainer');
让输入=document.createElement('input');
让计数=['class1'、'class2'、'class3'、'class4'、'class5'];
for(设i=0;i

这段代码更快,因为conainer插入到带有所有childNode的文档中,并且DOM被重绘一次。如果使用createElement而不是innerHtml,则本机代码在不使用Serriaze html的情况下创建新元素的速度会更快。而且我在DOM中没有多次使用find elemet。您可以尝试foreach而不是loop for。

我认为下一段代码是一个好方法:

let container = document.createElement('div');
container.setAttribute('id','Maincontainer');
let input = document.createElement('input');
let count = ['class1','class2','class3','class4','class5'];

for(let i = 0; i < count.length; i++){
  let cloneInput = input.cloneNode();
  cloneInput.classList.add(count[i]);
  container.appendChild(cloneInput);  
}

document.body.append(container);
let container=document.createElement('div');
setAttribute('id','Maincontainer');
让输入=document.createElement('input');
让计数=['class1'、'class2'、'class3'、'class4'、'class5'];
for(设i=0;i

这段代码速度更快,因为conainer插入到带有所有childNode的文档中,DOM会被重新绘制一次。如果使用createElement而不是innerHtml,则本机代码在不使用Serriaze html的情况下创建新元素,速度会更快。而且我在DOM中没有多次使用find elemet。您可以尝试foreach而不是loop for。我建议存储新创建的元素将元素输入到变量中

var inputElements = document.getElementsByTagName('input'); 
然后,在
forEach
函数中,为当前使用的输入元素创建一个新变量,并将其类设置为原始
count
数组中存储的类名

count.forEach(function (className, index) {
    var currentInputElement = inputElements[index];
    currentInputElement.setAttribute('class', className);
});

希望这有帮助!

我建议将新创建的输入元素存储到变量中

var inputElements = document.getElementsByTagName('input'); 
然后,在
forEach
函数中,为当前使用的输入元素创建一个新变量,并将其类设置为原始
count
数组中存储的类名

count.forEach(function (className, index) {
    var currentInputElement = inputElements[index];
    currentInputElement.setAttribute('class', className);
});

希望这有帮助!

您是否尝试将列表中的一个类应用于每个可能的输入字段?因此输入字段1将获得class1,输入字段2将获得class2,等等?您是否尝试将列表中的一个类应用于每个可能的输入字段?因此输入字段1将获得class1,输入字段2将获得class2,等等。。?