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>
3条答案
按热度按时间fd3cxomn1#
在JSFiddle中,当您将 Package 设置为“onLoad”或“onDomready”时,您定义的函数只在该块内部定义,无法由外部事件处理程序访问。
最简单的解决办法是改变:
收件人:
cdmah0mi2#
将换行从**”
onload
“更改为”No wrap - in <body>
“**定义的函数具有不同的作用域。
p8ekf7hl3#
如果您使用Angular.js,则嵌入到HTML中的函数,例如
onclick="function()"
或onchange="function()"
。它们不会注册。您需要在javascript中生成更改事件。例如: