【问题标题】:Javascript: Error, object is not a functionJavascript:错误,对象不是函数
【发布时间】:2013-12-05 12:53:22
【问题描述】:

我对这个非常小的代码有一个奇怪的问题:

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 提到了函数的名称。谢谢! 谢谢大家的帮助

【问题讨论】:

  • 我看不出这段代码有什么问题。你能告诉我们它发生在哪条线上吗?
  • 在 FF 和 Chrome 上测试,没有出现错误,不断添加和删除输入。

标签: javascript function object


【解决方案1】:

更改 autre() 函数或新创建元素 的名称。

似乎IE9将的名称autre附加到当前Window对象(或全局对象)。

在这种情况下,autre 将引用新创建的元素,而不是您的函数。

【讨论】:

    【解决方案2】:

    那个脚本很适合我http://jsfiddle.net/J7acJ/

    刚刚添加了一个事件监听器

    document.querySelector("select").addEventListener('change', function(){
        autre(this);
    })
    

    【讨论】:

    • 此代码在旧版 IE 中不起作用。此外,他的错误是因为 window.autre 被新创建的名为“autre”的元素替换。这就是错误提示的原因:对象不是函数。
    猜你喜欢
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多