javascript参数对象引用未知

时间:2016-02-01 18:44:06

标签: 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 = "../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">&nbsp;
            </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来解释它失败的原因,那就太棒了。

1 个答案:

答案 0 :(得分:2)

我建议在MyTwistie1事件调用中将document.getElementById('MyTwistie1')替换为SubRow1,将document.getElementById('SubRow1')替换为onClick