javascript数组返回[object Window],而不是数组内容


javascript array returns [object Window] instead of array content

我有个问题。我写了一些与"var pixelArray = [];"相呼应的PHP代码。在那之后,它会回显一些类似的变量:"var canvas$id = 'can' + $id;"。并且还针对每个变量回波CCD_ 3。

现在,由于某种原因,当我运行脚本时,数组不包含任何内容。

有人能向我解释一下原因吗?

如果你需要更多信息,请告诉我。

编辑:

这是我的完整(但仍然很简单(代码:

<?php
        $blockCounter = 1;
        $scriptCounter = 1;
        $arrayCounter = 1;
        $size = 32 * 32;
        $yLine = 1;
        while ($blockCounter <= $size)
        {
            if ($blockCounter == 32 * $yLine){
                echo "<canvas id='"can$blockCounter'" width='"17'" height='"17'" style='border:1px solid #777777;'>GET A NEW BROWSER</canvas>";
                echo "<br>";
                $blockCounter = $blockCounter + 1;
                $yLine = $yLine + 1;
            }
            else{
                echo "<canvas id='"can$blockCounter'" width='"17'" height='"17'" style='border:1px solid #777777;'>GET A NEW BROWSER</canvas>";
                $blockCounter = $blockCounter + 1;
            }
        }
        echo "<script>";
        echo "var pixelArray = [];";
        while ($arrayCounter <= $size)
        {
            echo "var name$arrayCounter = 'can' + $arrayCounter;";
            echo "pixelArray.push(name$arrayCounter);";
            $arrayCounter = $arrayCounter + 1;
        }
        while ($scriptCounter <= $size)
        {
            echo "var c = document.getElementById('"can$scriptCounter'");";
            echo "picoco$scriptCounter = c.style.backgroundColor = '"#000000'";";
            $scriptCounter = $scriptCounter + 1;
        }
        echo "document.getElementById('"arrayLoc'").innerHTML = pixelArray[0];";
        echo "</script>";
    ?> 
    <p id="arrayLoc"></p>

document.getElementById("arrayLoc"(返回null,而不是pixelArray[0]。问题是在javascript加载时,段落标记尚未加载到DOM中。你可以把它放在下面显示的脚本上面。

    echo '<p id="arrayLoc"></p>';
    echo "<script>"
    echo "var pixelArray = [];";
    while ($arrayCounter <= $size)
    {
        echo "var name$arrayCounter = 'can' + $arrayCounter;";
        echo "pixelArray.push(name$arrayCounter);";
        $arrayCounter = $arrayCounter + 1;
    }
    while ($scriptCounter <= $size)
    {
        echo "var c = document.getElementById('"can$scriptCounter'");";
        echo "picoco$scriptCounter = c.style.backgroundColor = '"#000000'";";
        $scriptCounter = $scriptCounter + 1;
    }
    echo "document.getElementById('"arrayLoc'").innerHTML = pixelArray[0];";
    echo "</script>";
?> 

或者在加载DOM后运行javascript。

    echo "<script>";
    echo "window.onload = function () {";
    echo "var pixelArray = [];";
    while ($arrayCounter <= $size)
    {
        echo "var name$arrayCounter = 'can' + $arrayCounter;";
        echo "pixelArray.push(name$arrayCounter);";
        $arrayCounter = $arrayCounter + 1;
    }
    while ($scriptCounter <= $size)
    {
        echo "var c = document.getElementById('"can$scriptCounter'");";
        echo "picoco$scriptCounter = c.style.backgroundColor = '"#000000'";";
        $scriptCounter = $scriptCounter + 1;
    }
    echo "document.getElementById('"arrayLoc'").innerHTML = pixelArray[0];";
    echo "}";
    echo "</script>";
?> 
<p id="arrayLoc"></p>