EDIT jQuery.inArrayは文字列を処理できませんでした!= int比較。これはShankarSongoliの助けを借りて解決されました。もともと、それは可変範囲の問題であると考えられていました。だから、あらゆる問題を見ているだけでなく、すべての面を見てください。問題は、私たちのコメントがこの回答を受け入れ、それを閉じて解決されるので、jQuery.inArrayは-1を返し続けます。
omit_all_user_contacts = new Array();
add_contacts = new Array();
function is_added_contact(id) {
if (jQuery.inArray(id, add_contacts) == -1)
return false;
return true;
}
function selectcontacts(userid){
document.getElementById("ic"+userid).checked = true;
omit_all_user_contacts.push(userid);
var buf = '<table class="contactlist" width="100%">';
buf = buf + "<tr class='contactlistheader'><td></td><td>Contact Name</td><td>Company</td><td>Email</td><td>Profession</td></tr>";
var tmp;
jQuery.getJSON('/user/get_user_contacts/'+userid, function(data) {
jQuery.each(data.contacts, function(key, value) {
buf = buf + "<tr><td><input type='checkbox' name='manualcontact[]' onclick='manualcontact(" + value.id + ",this.checked)' ";
alert(is_added_contact(value.id));
if (jQuery.inArray(value.id, add_contacts) > -1) {
buf = buf + " checked ";
}
buf = buf + "/></td>";
buf = buf + "<td>" + value.firstname + " " + value.lastname + "</td>";
buf = buf + "<td>" + value.company + "</td>";
buf = buf + "<td>" + value.email + "</td>";
buf = buf + "<td>" + value.profession + "</td></tr>";
});
buf = buf + '</table>';
iBox.show(buf);
});
}
function manualcontact(id,val) {
if (val == true) {
add_contacts.push(id);
} else {
add_contacts.splice(jQuery.inArray(val, add_contacts), 1);
}
}
あなたのコードは正常に見えます。両方の変数に 'var'を使って再度試してみてください。どのようなエラーが出ますか? – ShankarSangoli
こんにちは、応答に感謝します。 manualcontactが呼び出されると、その値がadd_contacts配列に追加されます。 jQuery.each(data.contacts、機能(キー、値)が、前の行では、この変数が表示されて、私はちょうどそれがアクセスできるようにする必要があります。selectcontactsが呼び出されたときしかし、add_contacts配列は、それがこのループを開始したら消えます –
グローバル変数であるため、 'each'ループ内でもアクセス可能になります。 – ShankarSangoli