Javascript onclick事件工作显示但不隐藏

时间:2013-01-21 06:44:13

标签: javascript html onclick

这是一个非常基本的脚本,但基本上我在点击时显示一个div,然后在你稍后点击按钮标题时隐藏div。我以前做过这件事并且完美无缺。我似乎无法找出我做错了什么,或者我做错了。就像我说的那样,第一个click()显示完美,第二个hide()无效

JS:

function click1(){
    document.getElementById('form1').style.display='block';
}

function hide1(){
    document.getElementById('form1').style.display='none';
}

HTML:

<tbody>
 <tr>
  <td style="cursor:pointer;" onclick="click1()">
   <div id="form1" style="display:none;">
    <form action="enter.php" method="post">
     <label for="entry1">Entry1</label>
      <input type="text" id="entry1" name="entry1" size="15" /><br>
     <label for="entry2">Entry2</label>
      <input type="text" id="entry2" name="entry2" size="15"/><br>
     <label for="entry3">Entry3</label>
      <input type="text" id="entry3" name="entry3" size="15"/><br>
      <input type="hidden" name="id" value="1" /><br>
      <input type="hidden" name="table" value="table" /><br>
      <input type="submit" value="GO!" />
      <input type="button" value="later" onClick="hide1()"/>
    </form>
   </div><sub>1</sub>
  </td>
 </tr>
</tbody>

2 个答案:

答案 0 :(得分:2)

该按钮是td的子项,因此两个函数都会在同一个点击事件中触发。

将此添加到hide1()

function hide1(e){
    document.getElementById('form1').style.display='none';
    e.stopPropagation();
}

这可以防止事件冒泡DOM并触发td事件。

您还需要在点击处理程序中传递事件:onClick="hide1(event)"

演示:http://jsfiddle.net/7PT8U/

答案 1 :(得分:0)

你可以做这样的事情

 <tbody>
 <tr>
  <td style="cursor:pointer;">
   <div id="form1" style="display:none;">
    <form action="enter.php" method="post">
     <label for="entry1">Entry1</label>
      <input type="text" id="entry1" name="entry1" size="15" /><br>
     <label for="entry2">Entry2</label>
      <input type="text" id="entry2" name="entry2" size="15"/><br>
     <label for="entry3">Entry3</label>
      <input type="text" id="entry3" name="entry3" size="15"/><br>
      <input type="hidden" name="id" value="1" /><br>
      <input type="hidden" name="table" value="table" /><br>
      <input type="submit" value="GO!" />
      <input type="button" value="later" onClick="hide1()"/>
    </form>
   </div><sub onclick="click1()">1</sub>
  </td>
 </tr>
</tbody>