我对这个非常小的代码有一个奇怪的问题:
function autre(element)
{
if (element.value=="autre")
{
var inputText=document.createElement("input");
inputText.setAttribute("type", "text");
inputText.setAttribute("name", "autre");
inputText.setAttribute("required", "");
element.parentNode.appendChild(inputText);
}
else element.parentNode.removeChild(element.nextSibling);
}
和HTML
<select name="matiere" onchange="autre(this);">
<option value="autre">Autre</option>
<option value="...">Some others options</option>
</select>
选择select的'autre'值时创建输入文本..这样可以正常工作..但是当我再次更改该值时,我得到一个奇怪的错误:对象不是函数..
有什么想法吗?..
编辑:问题是因为ceakki提到了该功能的名称。谢谢! 谢谢大家的帮助
答案 0 :(得分:2)
更改 autre()功能或新创建元素的名称&lt; input name =“autre”... />.
IE9似乎附加&lt; input name =“autre”的名称 autre ... /&gt;到当前的Window对象(或全局对象)。
在这种情况下, autre 将引用新创建的元素,而不是您的函数。
答案 1 :(得分:1)
该脚本适用于我http://jsfiddle.net/J7acJ/
刚添加了eventListener
document.querySelector("select").addEventListener('change', function(){
autre(this);
})