js获取节点

获取节点

1层级节点

<ul>
    <li id="li1">1</li>
    <li>2</li>
    <li id="li3">3</li>
    <li>4</li>
    <li>5</li>
        
 </ul>
 
<script>
 
    //获取id名为li1的元素赋值给li1
    let li1=document.getElementById(li1)
    //返回父节点:parentNode
    let par=li1.parentNode
    //给父节点添加1像素红色实线边框
    par.style.border='1px solid red'
 
 
    //获取所有子节点的集合:childNodes
    let nodes=par.childNodes
    // 第一个子节点文本颜色改为红色
    nodes[1].style.color='red'
 
    //第一个子节点:firstChild
    let frist=par.firstChild
 
    //最后一个节点:lastChild
    let last=par.lastChild
 
    //上一个:previousSibling
    let li3=document.getElementById('li3')
    console.log(li3.previousSibling)
    
    //下一个:nextsibling
    console.log(li3.nextsibling)
</script>

通过获取父节点修改第一个子节点和最后一个子节点元素

 <ul>
        <li id="li1">1</li>
        <li>2</li>
        <li id="li3">3</li>
        <li>4</li>
        <li>5</li>
        
 </ul>
 
<Script>
        // 获取父节点
        let p=document.getElementsByTagName('ul')[0]
        p.firstElementChild.style.border='1px solid blue'
        p.lastElementChild.style.border='1px solid blue'
</script>

2通过点击单选按钮,实现图片的切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="radio" name="book" value="图书1">图书1
    <input type="radio" name="book" value="图书2">图书2
    <br>
    <img src="" alt="" height="300px" width="500px">
    <p></p>
    <script>
        let img=document.querySelector('img')
        let p=document.querySelector('p')
        document.getElementsByName('book')[0].onchange=function(){
            img.setAttribute('src','img/1.jpg')
            let val=document.getElementsByName('book')[0].value
            p.innerHTML=val
        }
        document.getElementsByName('book')[1].onchange=function(){
            img.setAttribute('src','img/2.jpg')
            let val=document.getElementsByName('book')[1].value
            p.innerHTML=val
        }
    </script>
</body>
</html>

3追加元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="radio" name="book" value="图书1">图书1
    <input type="radio" name="book" value="图书2">图书2
    <br>
    <!-- <img src="" alt="" height="300px" width="500px"> -->
    <p></p>
    <script>
        let p=document.querySelector('p')
        document.getElementsByName('book')[0].onchange=function(){
            // 创建一个node
            let img=document.createElement('img')
            img.setAttribute('src','img/1.jpg')
            img.style.height='200px'
            // 追加元素
            p.appendChild(img)
        }
        document.getElementsByName('book')[1].onchange=function(){
           // 创建一个node
           let img=document.createElement('img')
            img.setAttribute('src','img/2.jpg')
            img.style.height='200px'
            // 追加元素
            p.appendChild(img)
        }
    </script>
</body>
</html>

4通过父元素删除子节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>删除</title>
</head>
<body>
    <img src="img/1.jpg" alt="">
    <script>
        document.querySelector('img').onclick=function(){
            let img=document.querySelector('img')
            // 需要通过父元素,才能删除
            img.parentNode.removeChild(img)
        }
    </script>
</body>
</html>
### JavaScript获取 DOM 节点并绑定点击事件 在 JavaScript 中,可以通过多种方式获取 DOM 节点,并为其绑定点击事件。以下是几种常见的做法: #### 使用 `getElementById` 绑定单个元素的点击事件 当只需要处理单一特定 ID 的元素时,可以使用 `document.getElementById()` 来选取该元素,并利用 `.addEventListener()` 方法来监听其上的点击行为。 ```javascript const element = document.getElementById('uniqueId'); element.addEventListener('click', function(event){ console.log('Element with uniqueId was clicked!'); }); ``` #### 使用 `querySelector` 和 `querySelectorAll` 处理复杂的选择条件 对于更复杂的 CSS 选择器表达式,则可采用 `document.querySelector()` 或者 `document.querySelectorAll()` 函数。前者返回第一个符合条件的对象;后者则会给出 NodeList 集合,允许遍历每一个匹配项以设置相同的事件处理器[^1]。 ```javascript // 单一元素 let singleElement = document.querySelector('.className'); singleElement.addEventListener('click', (event) => { console.log(`Clicked on ${event.target.tagName}`); }); // 多个相同类型的元素 let elementsList = document.querySelectorAll('.commonClass'); elementsList.forEach((item, index) => { item.addEventListener('click', () => { console.log(`${index}th .commonClass element is clicked`); }); }); ``` #### 动态创建节点后的事件委托 如果是在动态加载的内容上附加交互逻辑,推荐的做法是对父容器应用一次性的事件监听器,再通过事件冒泡机制捕获子级触发的动作。这种方法不仅简化了代码结构,还提高了性能效率[^2]。 ```javascript parentContainer.addEventListener('click', function(event){ if(event.target && event.target.matches('.dynamicChild')){ alert('Dynamic child node has been clicked.'); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值