在IE中使用javascript预填充动态创建的文本框

时间:2008-10-24 14:34:48

标签: javascript internet-explorer

我正在尝试动态地将一些文本框(输入类型=文本)添加到javascript中的页面并预填充它们。文本框即将出现,但它们空洞。预填充文本框的正确方法是什么。理想情况下,我喜欢使用创建子div的技巧,设置innerhtml属性,然后将该div添加到父主div,但这不起作用。然后我以为我会使用dom,但在插入之前或之后设置textboxname.value将不起作用,并且执行txttextbox.setattribute('value','somevalue')也将无效。在Firefox中运行良好。是什么赋予了?这有可能吗?这是我的代码。我知道我只使用字符串文字,但最终会用Web服务调用的结果替换它们。下面是一些代码。哦,如何在键入代码时显示代码?我以为它缩进了四个空格,我这样做但代码仍在一行。对不起。

var table=document.createElement('table');
var tbody=document.createElement('tbody');
var row=document.createElement('tr');
row.appendChild(document.createElement('td').appendChild(document.createTextNode('E-mail')));
var txtEmail=document.createElement('input');

row.appendChild(document.createElement('td').appendChild(txtEmail));
tbody.appendChild(row);
table.appendChild(tbody);

//document.getElementById('additionalEmails').innerHTML="";
document.getElementById('additionalEmails').appendChild(table);

4 个答案:

答案 0 :(得分:4)

txtEmail.value = 'my text'

不起作用?

答案 1 :(得分:2)

您也可以使用Prototype轻松完成此操作:

document.body.insert(new Element("input", { type: "text", size:20, value:'hello world' }))  

答案 2 :(得分:0)

我在过去遇到过与此类似的问题,虽然我的记忆有点模糊,但为什么它确实发生,我想你可能需要确保在修改其值之前将元素实际添加到DOM中。 e.g:


var txtEmail=document.createElement('input');

document.getElementById('someElementThatAlreadyExists').appendChild(txtEmail);

txtEmail.value = 'sample text';

答案 3 :(得分:0)

我最终通过子div将html直接注入页面来解决这个问题。这确实有效,只是因为我是盲人而且我用来读取屏幕的软件因为某些愚蠢的原因而未能在文本框中看到文本。去搞清楚。感谢原型上的提示,如果我决定不作弊并直接将元素添加到dom中,我会这样做。