如何从 IE 11 中的事件获取父元素的属性?
How to get parent element's attribute from event in IE 11?
我有以下 ,它在 chrome 和其他浏览器中有效,但在 IE 11 中无效。我不确定此代码的哪一部分 IE 不支持。在所有其他浏览器中,我在控制台日志中得到 svgimageclicked 但在 IE 中得到错误:
unable to get property 'getAttribute" of undefined or null reference
<div id='content' data-attribute="svgimageclicked">
<svg .......
</div>
document.getElementById('content')
.addEventListener('click', this.handle_click.bind(this));
handle_click(event){
console.log(event.target.parentElement.getAttribute('data-attribute');
}
试试这个例子:
var el = event.target.parentElement;
var v = getAttribute(el, "data-attribute");
function getAttribute (dom, attr) {
if (dom.getAttribute !== undefined) {
return dom.getAttribute(attr);
} else if (dom[attr] !== undefined) {
return dom[attr];
} else if (dom.getAttributeNode !== undefined) {
return dom.getAttributeNode(attr);
}else{
return null;
}
}
我尝试测试您的代码,发现它在其他浏览器中也出现错误。
我建议尝试参考下面的示例,它适用于大多数浏览器,包括 IE 浏览器。
<!doctype html>
<html>
<head>
</head>
<body>
<div id='content' data-attribute="svgimageclicked">
<svg height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
Sorry, your browser does not support inline SVG.
</svg>
</div>
<script>
document.getElementById('content').addEventListener('click', handle_click);
function handle_click(event)
{
var target = event.currentTarget;
var parent = target.parentElement.nodeName;
console.log(target.getAttribute('data-attribute'));
}
</script>
</body>
</html>
在 IE 11 浏览器中的输出:
我有以下 ,它在 chrome 和其他浏览器中有效,但在 IE 11 中无效。我不确定此代码的哪一部分 IE 不支持。在所有其他浏览器中,我在控制台日志中得到 svgimageclicked 但在 IE 中得到错误:
unable to get property 'getAttribute" of undefined or null reference
<div id='content' data-attribute="svgimageclicked">
<svg .......
</div>
document.getElementById('content')
.addEventListener('click', this.handle_click.bind(this));
handle_click(event){
console.log(event.target.parentElement.getAttribute('data-attribute');
}
试试这个例子:
var el = event.target.parentElement;
var v = getAttribute(el, "data-attribute");
function getAttribute (dom, attr) {
if (dom.getAttribute !== undefined) {
return dom.getAttribute(attr);
} else if (dom[attr] !== undefined) {
return dom[attr];
} else if (dom.getAttributeNode !== undefined) {
return dom.getAttributeNode(attr);
}else{
return null;
}
}
我尝试测试您的代码,发现它在其他浏览器中也出现错误。
我建议尝试参考下面的示例,它适用于大多数浏览器,包括 IE 浏览器。
<!doctype html>
<html>
<head>
</head>
<body>
<div id='content' data-attribute="svgimageclicked">
<svg height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
Sorry, your browser does not support inline SVG.
</svg>
</div>
<script>
document.getElementById('content').addEventListener('click', handle_click);
function handle_click(event)
{
var target = event.currentTarget;
var parent = target.parentElement.nodeName;
console.log(target.getAttribute('data-attribute'));
}
</script>
</body>
</html>
在 IE 11 浏览器中的输出: