【发布时间】:2022-01-15 14:46:09
【问题描述】:
我正在尝试使我的项目中的每个 HTML 元素都可点击。当它被点击时,它应该带我到另一个网页(other.html) 我的 JS:
let objs = document.querySelectorAll( 'body *' );
console.log(objs)
Array.from(objs).map(x => {
if (x.hasAttribute('loc') && x.hasAttribute('trig')){
let loc = x.getAttribute('loc')
let trig = x.getAttribute('trig')
let functionAtLast = function() {location.href = loc}
x.addEventListener(trig, functionAtLast)
}
})
我的 HTML:
<b loc = 'other.html' act = 'click'>hi</b>
当我点击粗体文本时,什么也没有发生。
我在这里做错了什么?
【问题讨论】:
-
“我试图让我的项目中的每个 HTML 元素都可以点击” - 为什么?这听起来是个坏主意,因为并非每个 HTML 元素都是可交互的(例如
<script>和<noscript>、<style>等) -
自定义属性应该写成
data-。见Using data attributes。什么都没有发生或您收到错误消息?如果是后者,错误是什么? -
map是一个返回新数组的 FP 风格的函数,它不等同于forEach。 -
属性是
trig还是act? -
您应该将选择器更改为
body *[log][trig]。
标签: javascript html