さて、次のように定義されたJavascriptのWebページに文字列の配列があります。
var arr = ["Apple", "Orange", "Pear"]; //this is populated by a php script prior to being sent to the client.
問題は、次のような for ループでこれらのアイテムにアクセスしようとしたときです。
for (var i = 0; i < arr.length; i++)
{
alert(arr[i]);
}
私の出力は次のようになります。
A
p
p
したがって、配列は一度に 1 文字ずつアクセスされるように見えますが、これはもちろん配列を作成した理由ではありません。
なぜこれが起こるのか、私には本当に理解できません。誰でも問題を確認できますか?
編集: 完全なコード - あまり良くありませんが、進行中の作業です:
var votes = {<?php foreach ($options as $o) { echo ' "'.$o['name'].'":"'.$o['votes'].'"'; if (next($options)) { echo ','; } } ?>};
var name = [<?php for ($i = 0; $i < count($options); $i++) { echo ' "'.$options[$i]['name'].'"'; if ($i < count($options)-1) { echo ','; } } ?> ];
function run(num) {
document.getElementById('out').innerHTML = '';
for (var i = 0; i < num; i++) {
if (document.getElementById(i+1).checked)
{
votes[name[i]] = (parseInt(votes[name[i]]) + 1);
document.getElementById(num+(i+1)).checked = true;
}
if (document.getElementById(num+(i+1)).checked)
{
votes[name[i]] = (parseInt(votes[name[i]]) + 1);
}
document.getElementById('out').innerHTML += name[i] + ': ' + votes[name[i]] + '<br />';
console.log('arr: ', name, 'j: ', name.length);
}
$.ajax("vote.php", {
data:votes,
});
}
オプションはこちら
"options" : [
{
"name" : "Children of Men",
"id" : "1",
"votes" : "0"
},
{
"name" : "City of God",
"id" : "2",
"votes" : "0"
},
{
"name" : "Hidden",
"id" : "3",
"votes" : "0"
},
{
"name" : "We Need To Talk About Kevin",
"id" : "4",
"votes" : "0"
}
]