dom createelement和innerhtml的问题

时间:2009-07-01 10:31:04

标签: javascript dom

/*************** javascript *****************/

function here(getValue) {

    alert(getValue)
}

function aaa() {

    document.getElementById('asd').innerHTML = '<input type="text" name="textfield" onkeyup="here(this.value)" />'
}

function aaa2() {

    var temp = document.getElementById('asd').innerHTML
    document.getElementById('asd').innerHTML = temp+'<input type="text" name="textfield" onkeyup="here(this.value)" />'
}

function dom() {

    var zzz = document.getElementById('asd')

    var inp = document.createElement('input')
    inp.type = 'text'
    inp.name = 'textfield'
    inp.onkeyup = function() {here(this.value)}

    zzz.appendChild(inp)
}

/************************************/

<div id="asd"> 
    <input type="text" name="textfield" onkeyup="here(this.value)" />
</div>

<input type="button" name="Button1" value="Button1" onclick="aaa2()" />
<input type="button" name="Button2" value="Button2" onclick="dom()" />

需要一些帮助...

我通过点击Button1使用dom创建一个文本字段,然后通过单击button2使用innerhtml与textfield结合。

问题是在将dom createelement与innerhtml结合后,dom创建的文本字段无法调用javascript函数...

任何人都有解决方案......

感谢...

2 个答案:

答案 0 :(得分:1)

我没有看到代码是如何工作的(可能不是最佳实践,但它确实有效)。

在Firefox 3.5中测试并使用。请参阅http://ashita.org/StackOverflow/innerhtml.html

上的测试页

答案 1 :(得分:1)

你的问题在于

inp.onkeyup = function() {here(this.value)}

如果之前不存在,则无法像这样定义onkeyup。另外,这个参数必须是一个字符串(基本上是要执行的Javascript代码)

inp.setAttribute('onkeyup','here(this.value)');