4 回答
TA贡献1802条经验 获得超5个赞
click
未调用函数的原因是属性中的 JavaScript 代码是在将元素的属性复制到属性的 JavaScript 代码的上下文中的上下文中执行的。所以你的click
函数隐藏在元素的click
method后面。
您可以使用任何属性/方法/等重现此效果。按钮 DOM 元素的。
例如,单击以下按钮将导致错误:Uncaught TypeError: innerHTML is not a function
<script>
function innerHTML(el) {
console.log(el.innerHTML);
}
</script>
<button onclick="innerHTML(this)">Click Me</button>
请注意,此效果仅适用于属性字符串内的 JavaScript。如果我们使用与 DOM 元素属性不重叠的函数名称,那么我们可以安全地避免此类错误:
<script>
function handleClick(el) {
// We can safely call the innerHTML function from within this function
innerHTML(el);
}
function innerHTML(el) {
console.log(el.innerHTML);
}
</script>
<button onclick="handleClick(this)">Click Me</button>
TA贡献1797条经验 获得超6个赞
最好保留干净的 html
<h3 class="toClone">Some title <button type="button">[toClone]</button></h3>
并在JS函数中使用onclick
let butonClone = document.querySelector('button')
let myBody = document.querySelector('body')
let toClone = document.querySelector('.toClone')
butonClone.onclick = function clone() {
myBody.append(toClone.parentNode.cloneNode(true))
}
TA贡献1880条经验 获得超4个赞
最好保留干净的 html
<h3 class="toClone">Some title <button type="button">[toClone]</button></h3>
并在JS函数中使用onclick
let butonClone = document.querySelector('button')
let myBody = document.querySelector('body')
let toClone = document.querySelector('.toClone')
butonClone.onclick = function clone() {
myBody.append(toClone.parentNode.cloneNode(true))
}
使用
onclik
属性穿上
this
像这样的功能onclick="clone(this)"
获取父节点
e.parentNode
克隆与
cloneNode(true)
再见!
- 4 回答
- 0 关注
- 136 浏览
添加回答
举报