我正在构建一个网站,它将(最终)成为游戏的前端。我希望能够动态构建用户能够购买的“权力”列表。为了构建这些列表,我使用基于PHP的SQL查询,然后将它传递给Javascript进行动态选择(某些权力具有先决条件权力)。关于eval的邪恶:如何清理
- 我知道有一个简单的方法做我在做什么,但我不是超级关注,现在右(我将在后面,但我试图让这个功能和然后干净)(再次,我知道这是非最佳的)。
- 我使用eval来解析显示哪些div,并且我想知道如何不去。
- 我有问题让我的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';
}
}
PHP编写HTML和JS: {$ AbleToUpgrade和$ UpgradeList是从SQL查询内置二维数组)
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>
为了获得股利显示(display:block;)
,我需要调用像这样的功能:
showUpgradeDetails("detail21")
,但我不能让JS/PHP写正确的报价。请帮忙(有任何或所有这些?)请!
json_encode-JSON.parse,JSON.stringify-json_decode – dandavis
将数据编码为JSON似乎是一种可行的解决方案。了解有关JSON的更多信息:http://en.wikipedia.org/wiki/Json。 –
使用JSON.parse()返回各种令人讨厌的错误,我不知道解决它们。有了初学者的知识,它看起来像我的变量没有被格式化为JSON对象。 – Farfromunique