当 ID 从 PHP 变量传递时,JavaScript 中的未定义 ID
undefined ID in javascript when ID is passed from PHP variable
我做了一些搜索,但没有给出明确的答案。我根本不是一个JavaScript人,而且很无能为力。但是,我理解PHP,对我来说这应该有效。我还应该注意,这个脚本曾经使用document.all作为它的javascript,我试图在可能的情况下更新到getElementById()(因为document.all在firebug中抛出了一个错误)。
现在在大多数情况下,页面显示正常,尽管没有应该发生的javascript更改。
我还必须为代码的陈旧性质道歉,当我接任我们游戏俱乐部的互联网人时,我继承了这个代码。此代码用于使用虚构积分购买虚构物品。
当我点击一个项目来"购买"它(或者可能不是哪个)时,该行的背景应该变成绿色,并且信用应该从我的总帐户中减去(或者如果我取消选中该框,则反向)。单击提交按钮会将我单击的内容添加到另一张工作表中,并从我的帐户中减去实际金额。
目前我收到"tr615 未定义"错误这是 PHP 为元素生成的代码,如下所示。
如果有人能帮我解决这个问题,那就太棒了。在搜索谷歌和这里几天后,我似乎找不到答案。
相关代码的PHP片段:(我们在网站上使用自定义函数,即:条目)
例如,假设 $id=615
<?php
while (list ($id, $name, $class, $desc, $range, $damage, $cost,$hide) = entry ($items) )
{
if ($hide =='0')
{
$JavaScriptArrayParms .= '"' . $id . '",';
$list .= $id . ',';
?>
<tr id="tr<?php echo $id; ?>"> //Thus tr615 for this example
<td>
<input type="checkbox" name="chk<?php echo $id; ?>" onclick="updateStoreTable(this.form, this, <?php echo $id; ?>)" />
<input type="hidden" name="cost<?php echo $id; ?>" value="<?php echo $cost; ?>" />
</td>
<td><?php echo $name; ?></td>
<?php if (! in_array($catid, $noclass)){ echo "<td>$class</td>";}?>
<td><?php echo $desc; ?></td>
<?php if (! in_array($catid, $norange)){ echo "<td>$range</td>";}?>
<td><?php echo $damage; ?></td>
<td><?php echo $cost; ?></td>
</tr>
<?php
}
}
?>
</table>
<input type="hidden" name="list" value="<?php echo $list; ?>" />
<input type="button" value="Purchase!" onclick='validatePurchase(this)' />
<input type="reset">
</form>
相关JS:(以前是 document.all.store...或者只是文档.all..在某些情况下。我希望我以正确的方式修复了它)
<script language="javascript">
var startmoney = <?php echo $currMoney; ?>;
function canAfford(t,id)
{
if(t.checked) return;// don't touch if checked for buying.
//alert("canAfford("+t+","+id+");");
//t.disabled = false;
eval("document.store.getElementByID(foo).disabled = false;");
eval("document.store.getElementByID(foo).checked = false;");
eval("document.getElementByID(tr"+id+").style.background = '#000000';");
}
function cantAfford(t,id)
{
//alert("cantAfford("+t.disabled+","+id+")-- "+t+";");
//alert("before disable");
//t.disabled = true;
eval("document.store.getElementByID(chk"+id+").disabled = "+true+";");
//alert("After disable");
eval("document.store.getElementByID(chk"+id+").checked = false;");
eval("document.getElementByID(tr"+id+").style.background = '#555555';");
}
function getCost(id)
{
return eval("document.store.getElementByID(cost"+id+").value");
}
function buying(t,id)
{
eval("document.getElementByID(tr"+id+").style.background = 'green';");
document.store.credits.value -= getCost(id);
}
function notbuying(t,id)
{
eval("document.getElementByID(tr"+id+").style.background = '#000000';");
var creds = new Number(document.store.credits.value);
var cost = new Number(getCost(id));
document.store.credits.value = (creds + cost);
}
function updateStoreTable(f,t,id)
{
var ids = new Array(<?php echo $JavaScriptArrayParms; ?>);
if(t.checked)
buying(t,id);
else
notbuying(t,id);
for(i = 0; i<ids.length; i++)
{
cost = new Number(getCost(ids[i]));
creds = new Number(f.credits.value);
//alert("COST: " +(cost)+"'nCREDITS: "+creds+"'nID: "+ids[i]);
// alert("'"+ (cost) + "' > '" + (creds) +"''n"+(eval(cost > creds)));
// alert("f.chk"+ids[i]+".checked");
if(eval("f.chk"+ids[i]+".checked")) { continue; } //ignore already carted items
if(eval(cost > creds))
cantAfford(eval("f.chk"+id),ids[i]);
else
canAfford(eval("f.chk"+id),ids[i]);
}
}
期:
它必须getElementById()
(末尾为小写 d)
第二:
使用 eval 时,代码的计算结果为:
document.getElementById(tr615).style.background = '#000000';
..什么会强制错误,因为 TR615 没有用引号括起来,所以 JavaScript 需要一个变量 TR615。
该行必须如下所示:
eval("document.getElementById('tr"+id+"').style.background = '#000000';");
但是:你为什么在这里使用 eval,这可以在没有 eval 的情况下完成:
document.getElementById('tr'+id).style.background = '#000000';
- 通过ID JavaScript显示随机背景图像
- 如何为动态创建的元素分配唯一的id-Javascript
- 如何在主页的弹出窗口中从向导中的用户控制中获取ControlToValidate ID-javascript asp.n
- 如何使用innerHTML更改图像大小来给它一个id Javascript
- 为类中的所有元素提供单独的 Id Javascript
- 设置元素 id = javascript 函数
- 在 id javascript 上验证 submitHandler
- 循环生成唯一 ID JavaScript
- 我需要使用他们的Facebook id javascript将Facebook照片流放入我的应用程序中
- 在.id-javascript中选择.class
- parsing a url for the id - Javascript
- 使用数字id javascript处理html输入元素
- 缺少:在属性id-javascript之后
- 根据数组中对象的数量改变id (javascript/jquery)
- 在Id javascript中选择一个类
- 替换youtube嵌入iframe视频ID - Javascript
- 通过id javascript填充文本字段
- 无法引用图像id javascript
- 点击返回按钮id-JavaScript
- 检查输入的数字是否正确 按ID - JavaScript