2

(最終的には) ゲームのフロントエンドになるサイトを構築しています。ユーザーが購入できる「パワー」のリストを動的に作成できるようにしたいと考えています。これらのリストを作成するために、私は PHP ベースの SQL クエリを使用し、それを Javascript に渡して動的な選択を行います (いくつかの権限には前提条件となる権限があります)。

  1. 私がやっていることをもっと簡単に行う方法があることは知っていますが、今はそれについてあまり心配していません(後で説明しますが、これを機能させてからきれいにしようとしています(繰り返しますが、これは知っています)最適ではありません)。
  2. どの div を表示するかを解析するために eval を使用していますが、表示しない方法を知りたいです。
  3. そもそもdiv名を正しく構築するのに問題があります。

これが私のコードです:Javascript(別のファイル)

function upgradeList(passed)
{
    var PowerArray = [];
    var DetailPowerID = [];
    var EscapedPowerID = [];
    PowerArray.push([]);
    PowerArray = eval(passed);
    var OutputThing="";
    for (i=0;i<PowerArray.length;i++)
    {
        DetailPowerID[i] = 'detail' + PowerArray[i][0];
        EscapedPowerID[i] = "'" + DetailPowerID[i] + "'";
    }
    for (i=0;i<PowerArray.length;i++)
    {
        OutputThing = OutputThing + "<br><a href='#' onClick='showUpgradeDetails(" + DetailPowerID[i] + ")'>" + PowerArray[i][2] + "</a><div class='hidden' id='" +
        DetailPowerID[i] + "'>" + PowerArray[i][3] + "</div>";  }
        document.getElementById("secondUpgrade").innerHTML=OutputThing;
        document.getElementById("secondUpgrade").style.display='block';
    }
}

HTML と JS を作成する PHP: {$AbleToUpgrade と $UpgradeList は両方とも SQL クエリから構築された 2 次元配列です)

echo "<script name='UpgradeList'>";
settype($UpgradesListSize[$i],"int");
for ($i=0;$i<count($AbleToUpgrade);$i++)
{
    echo "var UpgradeList" . $AbleToUpgrade[$i][0] . " = new Array();";
    for ($j=0;$j<=$UpgradesListSize[$i];$j++)
    {
        echo "UpgradeList" . $AbleToUpgrade[$i][0] . ".push(Array('"
            . $UpgradeList[$i][$j][0] . "', '"
            . $UpgradeList[$i][$j][1] . "', '"
            . $UpgradeList[$i][$j][2] . "', '"
            . $UpgradeList[$i][$j][3] . "', '"
            . $UpgradeList[$i][$j][4] . "'));";
    }
}
echo "</script>";

... 以降...

echo "<div id='SpendUpgrade'>
    Select power to upgrade:
    <ul>";
    for ($i=0;$i<count($AbleToUpgrade);$i++)
    {
        echo "<li><a href='#' name='UpgradeList" . $AbleToUpgrade[$i][0] . "' onClick='upgradeList(this.name)'>" . $AbleToUpgrade[$i][1] . " - " . $AbleToUpgrade[$i][2] . "</a></li>";
    }
    echo "</select>
    <div id='secondUpgrade' class='hidden'>

    </div>
    <div id='thirdUpgrade' class='hidden'>

    </div>
</div>";

ページを読み込むと、次のようなテキストが生成されます。

<a href="#" onclick="showUpgradeDetails(detail21)">Real Armor</a>

および対応する div:

<div class="hidden" id="detail21" style="display: none;">Your armor only works in the Waking</div>

div を表示するには(display:block;)、次のように関数を呼び出す必要があります。

showUpgradeDetails("detail21")

しかし、JS / PHPに引用符を正しく書かせることはできません。助けてください(これの一部またはすべてで?)お願いします!

4

1 に答える 1