[英]why href not working when anchor is dynamically created inside another anchor?
场景1:
我的锚点带有onclick="return false;"
然后在其中动态添加另一个锚。 当父锚具有onclick="return false;"
时, href
无效onclick="return false;"
但是当我删除该onclick
时,它工作正常。
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<a id="link1" onclick="return false;"></a>
<script>
var link = document.getElementById('link1')
var newLink = document.createElement('a')
newLink.setAttribute('href','https://wwww.google.com')
newLink.innerHTML="google"
//link.insertAdjacentElement('beforeend', newLink)
link.appendChild(newLink)
</script>
</body>
</html>
方案2:
我只有两个锚,其父锚具有onclick
作为return false
。 但在这种情况下,内部锚点的href
可以正常工作。
<a onclick="return false;"><a href="https://www.google.com">google</a></a>
所以问题是,当我在onclick
作为return false
另一个锚点内部动态添加锚点时,内部锚点的href
无法正常工作,但在静态创建它们时可以正常工作。
有人可以帮我了解这种行为吗?
浏览器不会像预期的那样解析嵌套,但是JavaScript设法嵌入了嵌套。
嵌套a
元素被禁止在HTML语法。 HTML规范没有说明原因; 他们只是强调规则。
从实际的角度来看,浏览器会在其解析规则中有效地实施此限制,因此与许多其他问题不同,违反规范将不起作用。 解析器有效地将open元素内的<a>
开始标签视为在开始新元素之前隐式终止open元素。
因此,如果您编写<a href=foo>foo <a href=bar>bar</a> zap</a>
,则不会获得嵌套元素。 浏览器会将其解析为<a href=foo>foo</a>
<a href=bar>bar</a>
zap
,即两个连续的链接,后跟一些纯文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.