2016-05-04 19 views
0

関数内でグローバル変数を宣言する方法は?どのように変数をグローバルに宣言しますか?ケースforeach? Javascript

はチェックしてみてください:here

  1. 私はcheckboxためforeach()を使用しています。
  2. 変数idは(これは重要ではありません/あなたがこのを無視することができます// boxvalすると、一部のデータ(ID &値)を追加)var idを宣言し、その後宣言されていない場合。
  3. その後、再び上に戻ります。(foreach)
  4. 2回目の繰り返し(変数IDはすでに最初のコード(No 2)で宣言しています)(IDはすでにelseに移動していると宣言しています)。

実行中のコードの流れを判断するためにアラートを使用してみます。

PHP:

<input type="checkbox" value="A" class="box-1" id="ID_1"> 
<input type="checkbox" value="B" class="box-1" id="ID_1"> 
<input type="checkbox" value="C" class="box-2" id="ID_2"> 
<input type="checkbox" value="D" class="box-2" id="ID_2"> 

<input type="button" id="button" /> 

JS:

$('#button').bind('click', function() { 

    var boxval=""; 
    $("input[class^='box-']").each(function(){ 
     if($(this).is(':checked')) 
     { 
      if (typeof window.id == "undefined" || window.id == null) 
      { 
       var id = $(this).attr('id'); 
       alert('a'); 
       boxval += $(this).attr('id') +'=&' + $(this).attr('value'); 
      } 
      else 
      { 
       if(id == $(this).attr('id')) 
       { 
        boxval += '&' + $(this).attr('value'); 
        alert('b'); 
       } 
       else 
       { 
        boxval += $(this).attr('id') +'=&' + $(this).attr('value'); 
        alert('c'); 
       } 
      } 
     } 
    }); 

    alert(boxval) 
}); 

それはa,bID_1=&A&B警告となります正しいかどう最初&第二のチェックボックスをチェックしてみてください。

+0

はグローバルスコープでそれを定義し、そしてあなたは、関数で値を割り当てることができます。 – vaso123

+0

window.foo = "hello" ' – jcubic

+0

のようなウィンドウにプロパティを追加することで、グローバル変数を追加することができます。 [XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように見えます。グローバルを定義することは、実際には悪いことです。 – Yoshi

答えて

0

varを使用している場合、この変数がローカルであると言うよりも、特定の範囲です。

は、あなたがあなたのHTML内のIDを繰り返してきた window.id = $(this).attr('id');


を使用することができるグローバル変数を作成するには、それが有効でないとjQueryは、第2のID要素を見つけることができません。

より良い使用<input type="checkbox" value="A" class="box-1" data-id="ID_1">$('.box-1').data('id')

+0

それは、私はあなたの提案のために大丈夫thx、たくさんのthxを期待する。 – Newbi