-4
    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);
        }
       }
  }
 );

array に値を代入しないのはなぜですか? 私が書くとprev[1] = "myvalue"、それも機能しません。アラートは常に undefined 表示

4

4 に答える 4

3

編集:コードを変更して、iもう存在しないようにしたため、以下の回答の一部は適用されなくなりました。しかし、提示したコードについてあなたが言ったことは、次の 2 つの点で信頼できません。

  1. その後にshowsがprev[1] = man_val;続くと言いましたが、それはあなたが示したコードには当てはまりません。alert(prev[1]);undefined

  2. あなたはそれが関数ではない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ます。

于 2013-04-02T07:16:21.113 に答える
1

iコードに変数が表示されません。そのはず-

prev[count] = man_val;
alert(prev[count]);
于 2013-04-02T07:16:43.130 に答える
1

alert(prev[i]変数 prev を prv に変更しalert(prv[count]) 、グローバル変数の javascript 問題 prev を考えると答えが見つかりました。私の最終的なコードは

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

うまくいっている

于 2013-04-02T07:58:48.430 に答える
0

push()を使用する

指定された要素を追加し、配列の新しい長さを返すことにより、配列を変更します。

count += 1;
prev.push(man_val);
console.log(prev);
...
于 2013-04-02T07:14:36.810 に答える