考虑以下代码(仅针对相关代码):
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 = "../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来解释它失败的原因,那就太棒了。
答案 0 :(得分:2)
我建议在MyTwistie1
事件调用中将document.getElementById('MyTwistie1')
替换为SubRow1
,将document.getElementById('SubRow1')
替换为onClick
。