我无法添加多个输入。我正在阅读包含项目和值的列表,并希望通过Javascript(POST)提交它们,但我无法弄清楚为什么它不想工作。我尝试了几种方式,最后我提出了这个问题,但它确实想要迭代它并抛出错误:
var form = document.createElement("form");
form.action = "submitform.php";
form.method = "post";
form.target = "_blank";
input = [];
var kvarray = document.getElementsByClassName('ua_mattext');
for (var i = 0; i < kvarray.length; i++) {
var fieldname = kvarray[i].id;
var fieldvalue = kvarray[i].value;
input[i] = "input_" + i;
document.createElement(input[i]);
input[i].type = "hidden";
input[i].name = fieldname;
input[i].value = fieldvalue;
form.appendChild(input[i]);
}
document.body.appendChild(form);
form.submit();
我做错了什么?
答案 0 :(得分:1)
我自己想通了。首先,我没有正确地声明Ext.application({
name : 'Fiddle',
launch : function() {
var container = new Ext.draw.Container({
renderTo: Ext.getBody(),
width: 400,
height: 300
});
var surf = container.getSurface();
var s1 = surf.add({
type: 'rect',
x: 50, y: 10, width: 300, height: 80, radius: 50,
fillStyle: '#ff0000', strokeStyle: 'black'
});
var s2 = surf.add({
type: 'path', path: 'M 50, 110 l 100 80 l 100 -80 l 100 80',
fillStyle: '#00ff00', strokeStyle: 'black'
});
var s3 = surf.add({
type: 'rect',
x: 50, y: 210, width: 300, height: 80, radius: 50,
fillStyle: '#0000ff', strokeStyle: 'black'
});
container.renderFrame();
// Resize (halve x and y)
setTimeout(function() {
container.setSize(200, 150);
s1.setAttributes({scalingX: 0.5, scalingY: 0.5});
s2.setAttributes({scalingX: 0.5, scalingY: 0.5});
s3.setAttributes({scalingX: 0.5, scalingY: 0.5});
container.renderFrame();
}, 5000);
}
});
变量(忘记&#34; var&#34;开头)
其次,我没有将input
设置为输入。
第三,我正在命名输入document.createElement()
,input_1
,这是无效的。只有一个,input_2
。
所以,现在它正在运作。以下是更正后的代码:
input
答案 1 :(得分:0)
当你说
时 input[i] = "input_" + i;
这一行没有任何内容实际上创建了一个输入HTML元素。相反,你可以做这样的事情
input[i] = <input type="hidden" name="${fieldname}" value="${fieldvalue}">
还可以替换该行之后的3行。[/ p>
p.s:您还应该在开头声明输入:
var input = []
p.p.s:您应该检查您对kvarray [i]等于的假设。如果你在后续行中执行kvarray [i] .value,我怀疑kvarray [i]将成为一个字符串,这是你需要它来设置输入的name属性等于它。