[英]How to add "onclick" event to .appendChild in same function?
[英]How can I add same click event in new node made by using cloneNode, appendChild. (in forEach() syntax)
我的目的是制作一個無限的 imageview function。
所以我成功地使用cloneNode
和appendChild
添加了相同的動作和新元素,但是新元素中的那個按鈕不適用於相同的點擊事件。
如何將相同的點擊事件添加到新元素?
let listMarginTop = 70; let listMarginLeft = 40; let list = document.getElementById('firstLine'); let lists = document.getElementsByTagName('li'); let listsArr = [...lists]; let z = 10; let transDelay = 1; let xBtn = document.getElementsByClassName('xBtn'); let xBtnArr = [...xBtn]; for(let i = 0; i < listsArr.length; i++) { listsArr[i].style.transition = 'all 0.5s linear ' + transDelay + 's'; transDelay -= 0.1; listsArr[i].style.zIndex = z; z--; listsArr[i].style.marginTop = listMarginTop + 'vh'; listsArr[i].style.marginLeft = listMarginLeft + 'vw'; listMarginTop -= 6; listMarginLeft -= 6; } let lastChildMarginTop = 12; let lastChildMarginLeft = -20; xBtnArr.forEach((x) => { x.addEventListener('click', () => { let copyWindow = x.parentElement.parentElement.cloneNode(true); x.parentElement.parentElement.style.opacity = '0'; copyWindow.style.marginTop = parseInt(list.lastChild.style.marginTop) - 6 + 'vh'; copyWindow.style.marginLeft = parseInt(list.lastChild.style.marginLeft) - 6 + 'vw'; copyWindow.style.zIndex = z; z--; lastChildMarginTop -= 6; lastChildMarginLeft -= 6; list.appendChild(copyWindow); let listChildArr = [...list.childNodes]; listChildArr.forEach(win => { win.style.marginTop = parseInt(win.style.marginTop) + 6 + 'vh'; win.style.marginLeft = parseInt(win.style.marginLeft) + 6 + 'vw'; }) xBtn = document.getElementsByClassName('xBtn'); xBtnArr = [...xBtn]; console.log(xBtnArr); }) })
* {margin: 0; padding: 0; border: 0;} ul { list-style-type: none; position: relative; }.rightMain { height: 100vh; flex: 7; flex-wrap: wrap; overflow: hidden; } #container { position: absolute; z-index: 3; } ul li { margin-top: -10vh; margin-left: -10vw; position: absolute; }.showWindow { width: 25vw; height: 25vh; border: 1px solid black; background-color: white; }.showWindow button { margin: 0.5vw 0.5vw 0; width: 1vw; height: 1vw; border-radius: 50%; border: 1px solid black; background-color: white; cursor: pointer; }
<,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width. initial-scale=1.0"> <title>Document</title> </head> <body> <div id='rightMain' className='rightMain'> <div id="container"> <ul id='firstLine'> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> <li> <div className='showWindow'> <button className='xBtn'></button> <button></button> </div> </li> </ul> </div> </div> </body> </html>
您必須在這里解決兩個問題-
className
屬性。 您必須在每個元素上將其更改為class
以便它接受正確的 class 並且您能夠使用getElementsByClassName()
正確地 select DOM 方法節點()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.