对象上未触发Onclick
Onclick not triggered on objects
所以我有一个X行表。我有以下HTML代码:
<tr id='row1' onClick="FormTRClick('1')"><td><a href='#'>Bla</a></td></tr>
<tr id='row2' onClick="FormTRClick('2')"><td><a href='#'>Bla</a></td></tr>
<tr id='row3' onClick="FormTRClick('3')"><td><a href='#'>Bla</a></td></tr>
<tr id='row4' onClick="FormTRClick('4')"><td><a href='#'>Bla</a></td></tr>
现在,当你点击超链接'Bla',你将也激活OnClick事件。是否有一种方法,只触发OnClick事件,当你不点击一个对象(如按钮,图像,href),但只在表行本身?
我的FormTRClick()函数如下:
function FormTRClick(ctrl) {
if (document.getElementById('chk' + ctrl).checked == true) {
document.getElementById('chk' + ctrl).checked = false;
} else {
document.getElementById('chk' + ctrl).checked = true;
}
}
我知道我也可以用逆的document.getElementById('chk' + ctrl).checked = !document.getElementById('chk' + ctrl).checked
但这不是重点,我有额外的代码在里面
谢谢
您需要为这些单击附加一个事件侦听器,并停止传播:
https://developer.mozilla.org/en/DOM/event.stopPropagation或者,您可以检查目标元素:
HTML:<tr id='row1' onClick="FormTRClick(event, '1')"><td><a href='#'>Bla</a></td></tr>
<tr id='row2' onClick="FormTRClick(event, '2')"><td><a href='#'>Bla</a></td></tr>
<tr id='row3' onClick="FormTRClick(event, '3')"><td><a href='#'>Bla</a></td></tr>
<tr id='row4' onClick="FormTRClick(event, '4')"><td><a href='#'>Bla</a></td></tr>
Javascript: function FormTRClick(event, ctrl) {
if (event.target.tagName != 'A' && document.getElementById('chk' + ctrl).checked == true) {
document.getElementById('chk' + ctrl).checked = false;
} else {
document.getElementById('chk' + ctrl).checked = true;
}
}
由于链接是表格行的一部分,因此当您单击它们时,它们将始终触发表格行的onclick。
有一个简单的解决方法,但是…
<tr id='row1' onClick="FormTRClick('1');"><td><a href='#' onmouseover="linkOver();" onmouseout="linkOut();">Bla</a></td></tr>
…和一些javascript…
var linkIsOver = false;
function FormTRClick(ctrl) {
if (!linkIsOver) {
if (document.getElementById('chk' + ctrl).checked == true) {
document.getElementById('chk' + ctrl).checked = false;
} else {
document.getElementById('chk' + ctrl).checked = true;
}
}
}
function linkOver () {
linkIsOver = true;
}
function linkOut () {
linkIsOver = false;
}
就这样做。在HTML:
<tr id='row1' onClick="FormTRClick(this, '1')"><td><a href='#'>Bla</a></td></tr>
在JS: function FormTRClick(elem, ctrl) {
if (elem.tagName != 'TR') return;
//do what you need
}
更新为大写标签名称
相关文章:
- 如何在动态创建元素的内联onclick事件中传递对象
- 如何从onclick字符串中引用javascript对象函数
- 如何声明要在onClick事件中使用的动态TypeScript对象名称
- 使用onclick调用属性对象函数
- 如何从onClick事件调用对象函数
- 使用对象中的值添加onclick事件
- Javascript:在为动态创建的对象设置 onClick 处理程序时避免 eval()
- 如何将 javascript 对象传递给使用 onclick 等方式指定的 JavaScript 函数
- 绑定一个 onclick 函数,对象作为在循环中创建的锚标记上的参数
- 如何在 javascript 中使用 Onclick 属性动态创建对象
- 如何在onClick上将对象作为参数传递给java脚本函数
- 将对象的键传递给 onclick 函数
- 未捕获的类型错误:对象不是onclick函数
- 访问javascript onclick函数中的对象
- 将对象作为参数传递给手把模板中的onclick方法
- 应用于图像对象的onclick方法导致向“;否”;页
- React-如何只捕获父对象's onClick事件,而不是子事件
- 使用onclick调用变量对象中的函数
- 移除附着到子对象的onclick
- Javascript的onclick对象依赖方法