代码之家  ›  专栏  ›  技术社区  ›  Hassang

如何使用JavaScript将html从某个位置提取到另一个位置并向其添加属性?

  •  1
  • Hassang  · 技术社区  · 8 年前

    我有这个html:

    <ul>
       <li><a href="img/karate/image1.jpg">Image 1</a></li>
       <li><a href="img/karate/image2.jpg">Image 2</a></li>
       <li><a href="img/boxing/image3.jpg">Image 3</a></li>
       <li><a href="img/karate/image4.jpg">Image 4</a></li>
       <li><a href="img/kungfu/image5.jpg">Image 5</a></li>
    </ul>  
    
    <button type="button">Red Color</button>
    

    1. 定位单词 karate 在列表中,然后返回最近的 <li>
    2. <李> 标记)作为起始位置。
    3. 结束位置将是其结束位置 </li>
    4. 将结果存储在字符串变量中。
    5. 添加/附加此属性: style="color:red;" <李>
    6. 所有这些都是通过点击按钮,并使用JavaScript实现的。

    结果:图像1、图像2和图像4将变为红色,图像3和图像5将被忽略。

    我不想像Cherrio那样使用JQuery或导入的JS文件,因为我想理解每一行!

    非常感谢你。

    1 回复  |  直到 8 年前
        1
  •  2
  •   zhuravlyov    8 年前

    "use strict";
    
    let button = document.querySelector('#button');
    button.addEventListener('click', onButtonClick);
    
    function onButtonClick() {
        let urls = document.querySelectorAll('a');
    
        for (let i = 0, max = urls.length; i < max; i++) {
    
            if (urls[i].href.indexOf('karate') !== -1) {
            
                if(urls[i].parentNode.tagName === 'LI') {
                    urls[i].parentNode.className = 'makeRed';
                }
                
            }
        }
    }
    .makeRed, .makeRed a {
      color: #FF0000;
    }
    <ul>
        <li><a href="img/karate/image1.jpg">Image 1</a></li>
        <li><a href="img/karate/image2.jpg">Image 2</a></li>
        <li><a href="img/boxing/image3.jpg">Image 3</a></li>
        <li><a href="img/karate/image4.jpg">Image 4</a></li>
        <li><a href="img/kungfu/image5.jpg">Image 5</a></li>
    </ul>
    
    <button type="button" id="button">Red Color</button>