0

さて、次のように定義された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"
    }
]
4

2 に答える 2

1
var arr = ['Apple', 'Orange', 'Pear'],
    i,
    j = arr.length;

console.log('Array?: ', arr.toString() == '[object Array]'); // edited

for (i = 0; i < j; i++) {
    console.log('arr: ', arr, 'j: ', j);
}

上記の console.log には何が問題なのかが表示されます。

于 2013-01-28T17:35:39.580 に答える
0

最後に、配列を次のように定義することで、この問題を「修正」しました。

new Array( 'Apple', 'Orange', 'Pear' );

残念ながら、実際の問題を理解できませんでした。

于 2013-04-10T12:27:52.813 に答える