javascript参数对象引用未知
考虑以下代码(仅限于相关代码): JSjavascript参数对象引用未知,javascript,html,Javascript,Html,考虑以下代码(仅限于相关代码): JS function ToggleRow(objTwistie, objRow) { if (objRow.style.display == "none") { objRow.style.display = ""; objTwistie.src = "../Images/SectionDown.gif"; } else { objRow.style.display = "none"; objTwistie.src = "
function ToggleRow(objTwistie, objRow) {
if (objRow.style.display == "none") {
objRow.style.display = "";
objTwistie.src = "../Images/SectionDown.gif";
} else {
objRow.style.display = "none";
objTwistie.src = "../Images/SectionUp.gif";
}
}
HTML
<form method="post" action="./WelcomePage.aspx?Tab=2" id="form1">
<table>
<tr>
<td>
<table>
<tr>
<td>
<img id="MyTwistie1" onclick="ToggleRow (MyTwistie1,SubRow1)" src="../Images/SectionDown.gif" alt="alt">
</td>
<td>
<div><span onclick="ToggleRow (MyTwistie1,SubRow1)" style="font-size:13px"><b>Header Row</b></span></div>
</td>
</tr>
</table>
</td>
</tr>
<tr id="SubRow1">
<td>
This is the section that gets hidden
</td>
</tr>
</table>
</form>
标题行
这是隐藏的部分
当我在img标记中调用onclick事件(单击页面上的图像)时,两个对象引用都会正确地传递给ToggleRow函数,并且脚本运行正常
但是,当调用span onclick事件中的事件时,只有对objRow的引用正确传递,而对MyTwistie1的引用生成一个错误,声明“MyTwistie1”未定义。我意识到有更好的方法可以做到这一点,但我只需要理解为什么这是失败的
编辑:使用getElementById的建议非常有效。如果有人能解释为什么它自己通过传递ID就失败了,那就太棒了。我建议用
document.getElementById('MyTwistie1')
替换MyTwistie1
,用document.getElementById('SubRow1')替换SubRow1
在onClick
事件调用中。是MyTwistie1
和SubRow1
全局变量吗?它们是在哪里定义的?@brso05-由于一些可怕的传统,这些变量将被自动定义,因为有些元素的ID就是这个名称。在我看来,这是一种糟糕的编码方式。@jfriend00哦,好吧,我不知道……谢谢你的解释。它似乎工作得很好@mjorisen它只是看起来那样。对SubRow1的引用被正确传递,并且无论单击哪个元素,节都被隐藏。但是,只有当我单击图像时,对图像的引用才会正确传递,并且更改图像的脚本失败。