2017-02-20 17 views
0

私はphpとjavascriptを使用して配列に値を設定しようとしています。 Onclick、私はPHP変数をaddToGroupという関数に渡します。この関数は、渡されたvarをjavascript配列に追加するJavaスクリプト関数です。弁護士を見ると、配列がクリックで表示されるのがわかりますが、検査するとサイズがゼロであることがわかります。私は間違って何をしていますか?私はこれを行うコードの一部を添付します。もしあなたがより多くの情報を必要とするなら、私はより多くのコードを提供することができます。あなたが何か間違った点を見つけたら教えてください!非常に多くのあなたが連想配列(またはオブジェクト)ので、「.LENGTH」彼らは動作しませんように、あなたの配列を使用しているphp var to javascript array

 echo "<br>"; 
     echo '<form>'; 
     echo '<input type="text" name="user" placeholder="enter name" />'; 
     echo '<button type="button" onclick="addToGroup(\'' . $groupName . '\', this.form.user.value)" />Add</button>'; 
     echo '<button type="button" onclick="removeFromGroup(\'' . $groupName . '\', this.form.user.value)" />Remove</button>'; 
     echo '</form>'; 
     echo "<br><br>"; 
    } 
    echo '<form>'; 
    echo '<button type="button" onclick="submitChanges()" />Log</button>'; 
    echo '</form>'; 

} else { 
    echo 'authentication failed.'; 
    exit; 
} 
?> 

<script> 
var groupChangesAdd = new Array(); 
var groupChangesRemove = new Array(); 

function addToGroup(groupName, user) { 
     if (groupChangesAdd[groupName] === undefined) { 
     groupChangesAdd[groupName] = user; 
     console.debug(user); 
     $('#groupChangesPlus'+groupName).html('+ ' + user + '<br>'); 
    } else { 
     groupChangesAdd[groupName] = groupChangesAdd[groupName] + ', ' + user; 
          $('#groupChangesPlus'+groupName).html($('#groupChangesPlus'+groupName).htm  l() + '+ ' + user + '<br>'); 
    } 
    console.debug(groupChangesAdd); 
} 
+1

Javascriptは連想配列をサポートしていません。 Javascriptで連想配列に似た何かを達成するには、オブジェクトを使う必要があります。 http://www.quirksmode.org/js/associative.html –

答えて

0

ありがとうございます。あなたは「groupChangesAdd」はそれで何かを持っているかどうかを確認したい場合は、お使いのデベロッパーコンソールにそれをログインして、そこにそれを点検、またはあなたが使用することができますすることができます:

var groups = Object.getOwnPropertyNames(groupChangesAdd); 
console.log(groups.length - 1); 

おかしい事は、「長さ」として存在しないということですObjectのプロパティでは、常に0が返されます。そのため、groups.lengthから1を削除します。

希望すると便利です。

+0

私はこの問題を以下のように変更することで解決できました:var groupChangesAdd = new Array(); var groupChangesAdd =新しいオブジェクト();お手伝いありがとう!!! –