当前位置: 首页 > 知识库问答 >
问题:

如何使用js选择同一div中的所有跨区域

严柏
2023-03-14

当我使用GetElementsByTagName时,我的代码只能选择代码中的第一个跨距。我得到一个错误TypeError:在“Node”上执行“Insert Before”失败:参数2不是“Node”类型。在HTMLDivelement。

现在任何人都可以帮助我选择卡片中的所有跨度,我也有很多卡片包含跨度

JS

const last = document.getElementById('last'); // define parent contain all cards
last.addEventListener("click", (event)=>{ // add click event in parent
    if(event.target.tagName === 'I'){ // Write 'I' not 'i'tag name must be upper case
        const icon = event.target; // define the target element
        const card = icon.parentNode;
        if(icon.getAttribute('value') === 'remove'){ // get attribute from i element to remove target card
            last.removeChild(card); // remove target card
        }else if(icon.getAttribute('value') === 'edit'){ // get attribute from i element to edit target card
            const span = card.firstElementChild;
            const input = document.createElement('input'); // create input text to carry span value and can edit it
            input.type = 'text'; // add type to input
            input.value = span.textContent; // take the text from span to the input
            card.insertBefore(input, span);// change the place between input and span
            card.removeChild(span); // remove span and add input in the same place
            icon.className = 'fa fa-check-circle'; // change icon from 'fa-edit' to 'fa-check-circle' to change icon shape
            icon.setAttribute('id','green-color'); // change ID from 'edit' to 'green-color' to make icon have green color when hover on it
            icon.setAttribute('value',''); // remove value from icon to enter in the next 'if else'
        }else if(icon.getAttribute('value') === ''){
            const input = card.firstElementChild;
            const span = document.createElement('span'); // create span to carry the input value
            span.textContent = input.value; // take the text from input to the span
            card.insertBefore(span, input); // change the place between input and span
            card.removeChild(input); // remove span and add input in the same place
            icon.className = 'fa fa-edit'; // change icon from 'fa-check-circle' to 'fa fa-edit' to change icon shape
            icon.setAttribute('id',''); // remove ID 'green-color' to make icon have blue color when hover on it
            icon.setAttribute('class','fa fa-edit edit'); // change ID from 'green-color' to 'edit' to make icon have green color when hover on it
            icon.setAttribute('value','edit'); //Make value 'edit' to enter in first 'if else' condation
        }
    }
})

HTML

<div class="row last" id="last">
                <h4 class="exam-header col-12">Schedule of exams dates</h4>
                <a class="exam-info teacher-link text-md-center col-8" id="teacher-link" href="#">
                    <span class="subject subject-name">Computer Science</span>
                    <span class="subject subject-date">2021/12/2</span>
                    <span class="subject subject-time">9:00 AM</span>
                    <span class="subject subject-duration">2h</span>
                    <i class="fa fa-edit edit" value="edit"></i>
                    <i class="fa fa-times remove" value="remove"></i>
                </a>
                <a class="exam-info teacher-link text-md-center col-8" id="teacher-link" href="#">
                    <span class="subject subject-name">Computer Science</span>
                    <span class="subject subject-date">2021/12/2</span>
                    <span class="subject subject-time">9:00 AM</span>
                    <span class="subject subject-duration">2h</span>
                    <i class="fa fa-edit edit" value="edit"></i>
                    <i class="fa fa-times remove" value="remove"></i>
                </a>
</div>

共有1个答案

左仰岳
2023-03-14

尝试使用QuerySelectorAll获取多个匹配项,然后循环访问它们:

js prettyprint-override">const allSpans = document.querySelectorAll('div span');

allSpans.forEach((span) => {
    // do stuff with the span 
})
 类似资料:
  • 我有一个带有类的并且在它里面有一个另一个带有类的。我从数据库中提取了数据,并将提取的数据转换为。我使用了那个json格式的数据,并在那个带有类的div上生成了一些信息,这些信息是。 我第一个jquery代码用类在div中追加数据,该代码如下所示:- 在上面,我首先获得了json格式的数据,并进行了一些验证,然后最后我用类在第一个div中附加了第二个div并用类。 我们知道是一个附加的div,我想在

  • 问题内容: 在将此标记为重复之前,我希望您认识到,实际上没有人为这个特定问题提供好的答案。在焦点/单击时选择contenteditable div中的所有文本时,接受的答案和TimDown的答案都无济于事,因为它们仅在元素已被聚焦时才起作用。就我而言,我希望单击一个按钮后即可选择contenteditablediv中的所有文本,即使该div事先未聚焦。 我该怎么办? 问题答案: 我使用了该线程中的

  • 问题内容: 使用Python … 如何选择一年中的所有星期日(或与此相关的任何一天)? 这些日期代表2010年的星期日。我想这也可能适用于一周中的任何一天。 问题答案: 您可以使用该模块查找一年中的第一个星期日,然后继续添加7天,生成新的星期日:

  • 问题内容: 我需要有关jQuery选择器的帮助。假设我有一个标记,如下所示: 除了用户单击时,如何获取所有复选框? 问题答案: 一个更完整的示例适用于您的情况: 当被点击复选框,该复选框的状态进行检查,并在当前形式的所有复选框被设置为相同的状态。 请注意,您无需从选择中排除该复选框,因为该复选框的状态将与其他所有复选框相同。如果出于某些原因确实需要排除,则可以使用以下方法:

  • 如何选择js中元素的所有li子元素 我想选择这个项目的所有li元素(直接子元素,盛大子元素)

  • 使用Selenium WebDriver和Java。在Selenium WebDriver中,有没有办法选择div id而不是select id? 我正在使用此HTML: