使用静态元素创建JavaScript全局数组?
答案 0 :(得分:1)
问题不在于removeFunction
无法访问bigArray
。问题出在您的onclick
属性中,以及您放在链接上的id
:
$('#div').append("<a href='#' id='bigArray[i]' onclick='removeFunction(bigArray[i])'>Element bigArray[i]</a><br />");
在onclick
中,您指的是i
,但是A)我猜测i
不是全局的,而且B)即使它是,它也会没有用于渲染该行的i
的值。代码将查找点击链接时的全局i
变量的值。
另外,您要创建具有相同id
值的多个元素,即bigArray[i]
(不是bigArray[0]
,bigArray[1]
等。
您可以使用该值,如下所示:
$('#div').append("<a href='#' id='bigArray[" + i + "]' onclick='removeFunction(" + i + ")'>Element bigArray[i]</a><br />");
有以下变化:
对于id
,我将其更改为:"...id='bigArray[" + i + "]'"
,其中会输出id='bigArray[0]'
,然后输出id='bigArray[1]'
等,而不是重复输出{{ 1}}(字面意思。
我只是将索引传递到id='bigArray[i]'
,再次将值放在那里,而不是对变量removeFunction
的引用:i
< / p>
然后您的"... onclick='removeFunction(" + i + ")' ..."
将是:
removeFunction
我不建议这样做,但这是最小的修复。
没有必要将function removeFunction(i) { // <== i, not id
bigArray.splice(i, 1); // <== real code, not pseudocode
renderArray(bigArray);
}
传递给任何东西。这是全球性的。
FWIW,我建议重构,这样你就不必每次都重新渲染整个东西。
答案 1 :(得分:0)
首先在全局范围内定义一个变量,该变量将保存&#34; bigArray&#34;,然后在通过ajax调用接收数据后为其分配值。
var bigArray;
$.ajax({
bigArray = bigArrayFromAjax;
renderArray(bigArray);
});
...那么你的其他功能应该可以访问它。