单击锚标记上未触发的事件
click event not firing on anchor tag
点击事件未触发。
我的<<p> strong> HTML :<tr>
<td>121345</td>
<!-- Other td-elements -->
<td><a href = "#" class = "remove-item">Remove</a></td>
</tr>
Javascript 我的:
window.document.load = function()
{
document.getElementsByClassName('remove-item').onClick(function(element)
{
console.log("element");
var productId = element.parentElement.parentElement.childElements[0].value;
console.log(productId);
});
};
我不想用jQuery。
你犯了一些错误:
-
document.getElementsByClassName
返回多个元素 -
.onClick(...)
不是添加onclick处理程序的方式
下面的代码段将在点击Remove
按钮时删除父<tr>
元素:
var items = document.getElementsByClassName('remove-item');
for(var i = 0; i < items.length; i++)
{
var item = items[i];
item.onclick = function(e)
{
e.target.parentNode.parentNode.style.display = "none";
};
}
<table>
<tr>
<td>Test 1</td>
<td><a href="#" class="remove-item">Remove</a></td>
</tr>
<tr>
<td>Test 2</td>
<td><a href="#" class="remove-item">Remove</a></td>
</tr>
<tr>
<td>Test 3</td>
<td><a href="#" class="remove-item">Remove</a></td>
</tr>
</table>
问题是getElementsByClassName
返回一个集合元素—而不是单个元素,因为类可以应用于多个元素。来自文档:
返回具有所有给定类名的所有子元素的类数组对象。
只使用[0]
访问返回类数组对象中的第一个元素(该类的第一个元素)。
onClick
也不是添加事件处理程序的正确方式。您可以使用addEventListener
,它接受一个事件和一个处理程序:
window.document.load = function() {
document.getElementsByClassName('remove-item')[0].addEventListener("click", function(element) { //add click handler to first element with remove-item class
console.log("element");
var productId = element.parentElement.parentElement.childElements[0].value;
console.log(productId);
});
}
如果您打算对每个具有事件的元素应用一个点击处理程序,您可以使用Array.prototype.forEach
:
var elements = document.getElementsByClassName('remove-item');
Array.prototype.forEach.call(elements, function(currentElement) {
console.log("element");
var productId = currentElement.parentElement.parentElement.childElements[0].value;
console.log(productId);
});
forEach
遍历类数组对象的每个元素,并对每个元素(存储在currentElement
中)执行回调。
相关文章:
- 如何使用2个事件单击1个日历
- 在 javascript 事件单击后清空输入
- 在元素 SVG 中使用 JavaScript 或 jQuery 进行事件单击
- fullCalendar动态事件单击行为
- 错误:'这'对象不正确;在JQuery中单击事件-单击时的意外行为
- 如何启用事件单击仅在指定的小时范围内
- 完整日历事件单击未触发
- 打开选择之前的事件.(单击工作速度不够快)
- 在 JavaScript 中,函数不会在事件单击时触发
- 主干分组依据集合仅在一次事件单击后呈现
- 如何禁用地图上的所有鼠标事件(单击、悬停等)
- Fullcalendar将图标添加到事件而不触发事件单击
- 在将JQuery对象添加到DOM之前,请将事件单击到JQuery对象
- 如何模拟拖动事件(单击鼠标移动按钮)
- 如果可编辑为 false,则全日历事件单击处理程序不起作用
- onclick事件单击时未添加类
- 事件单击Kml Placemark
- 事件单击时没有运行数据库
- 在事件单击函数中添加href url
- 创建元素和事件(单击)