The problem isn’t that removeFunction doesn’t have access to bigArray. The problem is in your onclick attribute, and the id you’re putting on the link:
$('#div').append("<a href="#" id='bigArray[i]' onclick='removeFunction(bigArray[i])'>Element bigArray[i]</a><br />");
In the onclick, you’re referring to i, but A) I’m guessing i isn’t a global, and B) Even if it is, it will not have the value of i that you used to render that row. The code will look for the value of a global i variable as of when the link is clicked.
Separately, you’re creating multiple elements with the same id value, which is bigArray[i] (not bigArray[0], bigArray[1], etc.)
You could use the value instead, like this:
$('#div').append("<a href="#" id='bigArray[" + i + "]' onclick='removeFunction(" + i + ")'>Element bigArray[i]</a><br />");
The changes there are:
-
For the
id, I changed it to:"...id='bigArray[" + i + "]'", which will outputid='bigArray[0]', thenid='bigArray[1]', etc., instead of repeatedly outputtingid='bigArray[i]'(literally. -
I just pass the index into
removeFunction, again by putting the value there, not a reference to the variablei:"... onclick='removeFunction(" + i + ")' ..."
Then your removeFunction would be:
function removeFunction(i) { // <== i, not id
bigArray.splice(i, 1); // <== real code, not pseudocode
renderArray(bigArray);
}
I would not recommend doing it that way, but it’s the minimal fix.
There’s no need to pass bigArray to anything. It’s a global.
FWIW, I would recommend refactoring so you don’t have to re-render the whole thing every time.
4
solved Creating a JavaScript global array with static elements?