2017-01-23 18 views
-1

私のexist_id配列の値がnullの場合、ifの条件が成り立ちます。配列はJavaScriptのif文では機能しません

val = this.value 

$(document).ready(function() { 
    $('.all_id_checkbox').click(function() { 
     var a = this.checked; 
     if (a == true) { 
      exist_id = new Array(); 
      exist_id = <?php echo json_encode($exist); ?>; 
      val = parseInt(this.value); 

      if (jQuery.inArray(val, exist_id)) { 
       exist_error.push(val); 
      } else { } 
     } 
    }); 
}); 
+1

'$のexist'の値は何ですか? PHPが出力された後のあなたの実際のJSコードは何ですか?私は 'exist_id'がオブジェクトであると推測します。したがって、' $ .inArray'は無効です。 –

+0

'$(document).ready(function(){ $( '。all_id_checkbox')。 ){ VAR Aは= this.checked; VARヴァル=のparseInt(this.value)を、 IF(== TRUE){ するvar exist_error = [];? varがexist_id = ; VAR new_array = Object.values(exist_id);他{}} }); (jQuery.inArray(ヴァル、new_array)){ exist_error.push(ヴァル)};場合 }) ; ' –

答えて

0

exist_idは、jQuery.inArray()が動作していないことが通常であるオブジェクトである場合、 inArrayは、値の配列に値が含まれているかどうかを調べるため、キー値のペア(json)でそのチェックを行うことができません。

(最初にconsole.log(exist_id)という出力を表示してください)。

とにかくあなたがexist_idからjson_encode()のリターンを割り当てているが、あなたがexist_idに割り当てるときjson_encodeの復帰が故に「オブジェクト表記」であろうように、JSONは「JavaScriptオブジェクト表記」を意味知ることができるように、それはJavaScriptのオブジェクトになります。

明らかにjQuery.inArrayは機能しません。

ちょうどあなたのオブジェクトの値ではなく、JSON(キーと値のペア)を渡し、それが動作するためには:ところで

if (jQuery.inArray(val, Object.values(exist_id))) 

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/values

を、私はあなたが持っていることがわかり

は、html要素のデータ属性にデータを入れて:

JavaScriptのウィッヒでPHPタグを使用すると、インラインscripts.Thisを使用しているあなたがやるべき.What悪い習慣があることを意味しています
<div id="exist-id" data-ids="<?php echo json_encode($exist); ?>"></div> 

その後、外部のjsスクリプトで値を取得する:

$('#exist_id').data('ids'); 

https://api.jquery.com/data/