我在iframe中有一些与onclick事件关联的元素,例如:
<iframe>
...
<input type="text" onclick="somefunction(this)"/>
...
</iframe>
在名为I的函数中,尝试更改输入的值,没什么特别的:
{
...
foo.value = "changed!"
...
}
此时我可以在firebug中看到值已经改变但是当函数完成时该值根本没有改变。
与onmouseover同样的事情似乎有效。
有什么想法吗?
感谢。
编辑:更改代码错误
答案 0 :(得分:1)
'this'在不同的上下文中意味着不同的东西
假设:
<input type="text" onclick="somefunction(this)"/>
'this'是输入(因为它被称为myInput.onclick())
可是:
function someFunction(foo) {
this.value;
}
你打电话给:
someFunction(myInput)
与
相同window.someFunction(myInput)
所以在那个上下文中,'this'是窗口对象。
改为使用'foo'(因为那是函数声明中的参数名称)。
答案 1 :(得分:0)
未为iframe代码定义值。 在Javascript中,“value”成员仅在设置时添加到对象中, 但导航员当然没有考虑到这一点。
对于设置内容(div也是这种情况),您应该使用:
this.innerHTML =“已更改!”;
或
this.innerText =“已更改!”;