使用静态元素创建JavaScript全局数组?

时间:2013-07-11 17:50:11

标签: javascript jquery arrays static-array

使用静态元素创建JavaScript全局数组?

2 个答案:

答案 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);
});

...那么你的其他功能应该可以访问它。