检查小提琴以查看发生的故障。
当我将数据(即使我将其留空)添加到文本框并尝试单击“添加”时,它不会执行任何操作。
打开Chrome和Firefox控制台都会给我同样的错误,它说“changeText2()”没有定义。
我该如何解决这个问题?我已经多次遇到过这个错误,而且大多数情况下它都有很奇怪的解决方法,但我不确定避免它的方法或者我甚至做错了什么。
似乎删除全局变量声明会在大多数情况下修复它,但是,在这种情况下我需要它们,而宁愿知道这个错误发生的原因和方式。
非常感谢任何和所有帮助。
使用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;
}
HTML:
<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>
答案 0 :(得分:86)
在JSFiddle中,当您将包装设置为“onLoad”或“onDomready”时,您定义的函数仅在该块内定义,并且不能被外部事件处理程序访问。
最简单的解决方法是改变:
function something(...)
要:
window.something = function(...)
答案 1 :(得分:5)
将包装从&#34; onload
&#34; 更改为&#34; No wrap - in <body>
&#34;
定义的函数具有不同的范围。
答案 2 :(得分:0)
如果您使用的是Angular.js,则嵌入到HTML中的函数,例如onclick =&#34; function()&#34;或onchange =&#34; function()&#34;。他们不会注册。您需要在javascript中进行更改事件。如:
$('#exampleBtn').click(function() {
function();
});