Javascript未捕获引用错误函数未定义

toe95027  于 2022-12-25  发布在  Java
关注(0)|答案(3)|浏览(146)

Check the Fiddle以查看是否发生故障。
当我添加数据(即使我让它空)到文本框,并尝试单击“添加”它没有做任何事情。
打开Chrome和Firefox控制台都给予我同样的错误,它说"changeText2()" is not defined
我该如何解决这个问题?我已经多次遇到这个错误,大多数情况下,它都有非常奇怪的解决方法,但我不确定避免它的方法,也不知道我做错了什么。
看起来删除全局变量声明可以在大多数情况下修复它,但是,在这种情况下我需要它们,并且更愿意知道为什么以及如何发生这个错误。

Javascript:

var list = document.getElementById('deliveryIdArray');
var names = [];

function changeText2() {
    var deliveryIdentification = document.getElementById('deliveryIdentification').value;
    names.push(deliveryIdentification);//simply add new name to array;
    //array changed re-render list
    renderList();
}

function renderList(){
    while (list.firstChild) {
        list.removeChild(list.firstChild);
    }
    //create each li again
    for(var i=0;i<names.length;i++){
        var entry = document.createElement('li');
        entry.appendChild(document.createTextNode(names[i]));
        var removeButton = document.createElement('button');
        removeButton.appendChild(document.createTextNode("remove"));
        removeButton.setAttribute('onClick','removeName('+i+')');
        entry.appendChild(removeButton);
        list.appendChild(entry);
    }
}

function removeName(nameindex){
    names.splice(nameindex,1);
    //array changed re-render list
    renderList();
}

function getDeliveries(){
    return names;
}

超文本标记语言:

<b>Number(s): </b>
    <input id = "deliveryIdentification" name = "deliveryIdentification" type = "text" size = "16" maxlength = "30">

    <!-- Array Area Creation -->
    <input type='button' onclick='changeText2()' value='Add' />

    <ol id="deliveryIdArray">
    </ol>

小提琴:http://jsfiddle.net/vSHQD/

fd3cxomn

fd3cxomn1#

在JSFiddle中,当您将 Package 设置为“onLoad”或“onDomready”时,您定义的函数只在该块内部定义,无法由外部事件处理程序访问。
最简单的解决办法是改变:

function something(...)

收件人:

window.something = function(...)
cdmah0mi

cdmah0mi2#

将换行从**”onload更改为No wrap - in <body>“**
定义的函数具有不同的作用域。

p8ekf7hl

p8ekf7hl3#

如果您使用Angular.js,则嵌入到HTML中的函数,例如onclick="function()"onchange="function()"。它们不会注册。您需要在javascript中生成更改事件。例如:

$('#exampleBtn').click(function() {
  function();
});

相关问题