为动态输入文本标记添加值的正确方法

时间:2014-05-13 14:50:45

标签: javascript

for(i=0;i<formInfo['elementCount'];i++){
    formElement = document.createElement('input');
    formElement.type = 'text';
    formElement.name = formInfo['elementName'][i];

    formElement.setAttribute("value",formInfo['elementValue'][i]); // <-this part

    console.log(formElement);

    newForm.appendChild(formElement);
}

如果我使用以上代码,则无效:

formElement.value=formInfo['elementValue'][i];

console.log()返回<input type="text" name="abc">(缺少值attr)

但如果

,则有效

formElement.setAttribute("value",formInfo['elementValue'][i]);

console.log()返回<input type="text" name="abc" value="123">

为什么formElement.value方法不起作用?

使用chrome和ff检查了这一点,两者都有相同的结果

2 个答案:

答案 0 :(得分:1)

取自:Properties and Attributes in HTML

  

value属性反映输入框内的当前文本内容,而value属性包含HTML源代码中value属性的初始文本内容。

     

因此,如果您想知道文本框中当前的内容,请阅读该属性。但是,如果您想知道文本框的初始值是什么,请阅读该属性。

答案 1 :(得分:0)

HTML值属性不一定是页面上显示的值。它被称为默认值 - 首次加载页面时使用

您必须设置defaultValue

尝试:

var formElement = document.createElement('input');
formElement.type = 'text';
formElement.defaultValue = "test";
formElement.name="test2";
console.log(formElement);

DEMO