4 回答
TA貢獻1802條經驗 獲得超5個贊
click未調用函數的原因是屬性中的 JavaScript 代碼是在將元素的屬性復制到屬性的 JavaScript 代碼的上下文中的上下文中執行的。所以你的click函數隱藏在元素的clickmethod后面。
您可以使用任何屬性/方法/等重現此效果。按鈕 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 關注
- 197 瀏覽
添加回答
舉報
