Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
46
rated 0 times [  50] [ 4]  / answers: 1 / hits: 176422  / 10 Years ago, thu, may 15, 2014, 12:00:00

Check the Fiddle to see the failure occurring.


When I add Data (Even if I leave it empty) to the text box and try to click "Add" it doesn't do anything.


Opening the Chrome and Firefox console both give me the same error, it says "changeText2()" is not defined.


How can I fix this? I've ran into this error several times and mostly it had really weird workarounds, but I am not sure as to the method for avoiding it or what I'm even doing wrong.


It seems removing the global variable declarations fixes it most of the time, however, I need them in this case and would rather know why and how this error occurs.


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>

Fiddle: http://jsfiddle.net/vSHQD/


More From » html

 Answers
93

In JSFiddle, when you set the wrapping to onLoad or onDomready, the functions you define are only defined inside that block, and cannot be accessed by outside event handlers.



Easiest fix is to change:



function something(...)


To:



window.something = function(...)

[#70995] Wednesday, May 14, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
adrianobeds

Total Points: 558
Total Questions: 118
Total Answers: 116

Location: Luxembourg
Member since Tue, Jan 25, 2022
2 Years ago
;