这是一个非常基本的脚本,但基本上我在点击时显示一个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>
答案 0 :(得分:2)
该按钮是td
的子项,因此两个函数都会在同一个点击事件中触发。
将此添加到hide1()
:
function hide1(e){
document.getElementById('form1').style.display='none';
e.stopPropagation();
}
这可以防止事件冒泡DOM并触发td
事件。
您还需要在点击处理程序中传递事件:onClick="hide1(event)"
答案 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>