var prev = [];
var count = 0;
var data = '';
$('#add_ref').click(function(){
var man_val = $.trim($('#manual_ref').val());
if(($.inArray(man_val,prev))==-1){
if(man_val != ''){
count += 1;
prev[1] = man_val;
alert(prev[i);// Problem is here
data = '<li id="45" class="as-selection-item"><a class="as-close">x</a> '+ man_val +' <input id="notal_45" class="cls-notal" type="checkbox" value="45" name="notal_chk[]"></li>';
$('#ul-rtl-ref-1').append(data);
}
}
}
);
为什么它没有为数组赋值?
如果我写prev[1] = "myvalue"
它也不起作用。警报始终显示未定义
编辑 prev.push(man_val)显示推送不是功能
答案 0 :(得分:3)
修改:您已经更改了代码,因此不再有i
,因此以下部分答案不再适用。但是你所说的关于你所呈现的代码的说法在两个方面并不可信:
您已经说过prev[1] = man_val;
后跟alert(prev[1]);
显示undefined
,但您所显示的代码根本不是这样。
您已经说prev.push
会导致错误,说push
不是函数,但在您显示的代码中,prev
绝对是一个数组,并且数组肯定有push
。
我的猜测是你有一些你没有展示过的东西,要么遮蔽prev
,要么为它分配一个非数组。但是,由于您没有显示该代码,因此您对代码所说的内容并不符合代码。
希望以下内容在您的实际情况中有所帮助。
count += 1;
prev[1] = man_val;
alert(prev[i]);// Problem is here
您在那里使用i
,而在上面的行中您使用的是1
。您尚未显示任何声明或初始化i
的代码,因此我们不知道它可能具有什么价值,但显然它没有值1
。
如果您真的想要推送到阵列,通常会使用push
或分配给prev[prev.length]
。所以你rcode可能是:
prev.push(man_val);
alert(prev[prev.length - 1]);
或
prev[prev.length] = man_val; // This will increment `prev.length`
alert(prev[prev.length - 1]); // ...which is why we're using -1 here
但是如果你有一个i
(并且你必须在某处,或者试图从中读取一个值会导致ReferenceError
)并且你想要使用它,你想要与你如何使用它一致。例如:
prev[i++] = man_val;
alert(prev[i - 1]);
我假设i
从0
开始。
答案 1 :(得分:1)
我在代码中看不到变量i
。它应该是 -
prev[count] = man_val;
alert(prev[count]);
答案 2 :(得分:1)
我找到了答案
我将变量prev更改为prv和alert(prev[i]
)更改为alert(prv[count])
我认为javascript问题在全局变量中很普遍。
我的最终代码是
var prv = []
var count = 0;
var data = '';
$('#add_ref').click(function(){
var man_val = $.trim($('#manual_ref').val());
if(($.inArray(man_val,prv))==-1){
if(man_val != ''){
count += 1;
prv[count] = man_val;
alert(prv[count]);
data = '<li id="45" class="as-selection-item"><a class="as-close">x</a> '+ man_val +' <input id="notal_45" class="cls-notal" type="checkbox" value="45" name="notal_chk[]"></li>';
$('#ul-rtl-ref-1').append(data);
}
}
}
);
它运作良好
答案 3 :(得分:0)