简体   繁体   English

在 vanilla JavaScript 中,如何在完全加载页面后使用 innerHTML 属性创建 select 元素?

[英]In vanilla JavaScript, how to select elements created using innerHTML property after completely loading the page?

      document.querySelector('#movies').innerHTML = `
        <div class="row">
          <div class="alert alert-primary w-50 mb-2" role="alert">
            New genre added.
          </div>
        </div>
        <div class="row">
          <div class="card mb-2 w-50">
            <div class="card-body">
              <h5 class="card-title">${name}</h5>
            </div>
          </div>
        </div>
      `;

From the code snippets, I am trying to select those elements with .card-title class从代码片段中,我正在尝试 select 那些带有.card-title class 的元素

  const cardsList = document.querySelectorAll('.card-title');
  console.log(cardsList);

but it keeps on returning an empty NodeList .但它继续返回一个空的NodeList

Is it really not possible to target those elements added using innerHTML property after the DOM has been created and the page already loaded?在创建 DOM 并加载页面之后,是否真的不可能定位使用innerHTML属性添加的那些元素?

No special treatment is needed.无需特殊处理。 Nodes, once inserted, don't remember where they come from.节点一旦插入,就不会记得它们来自哪里。 Most likely, you're running query code before insertion actually happens.最有可能的是,您在插入实际发生之前运行查询代码。

 const name = 'Your Name Here'; document.querySelector('#movies').innerHTML = ` <div class="row"> <div class="alert alert-primary w-50 mb-2" role="alert"> New genre added. </div> </div> <div class="row"> <div class="card mb-2 w-50"> <div class="card-body"> <h5 class="card-title">${name}</h5> </div> </div> </div> `; const cardsList = document.querySelectorAll('.card-title'); console.log(cardsList[0]);
 <section id="movies">Loading...</section>

windows.onload could be a problem on a older browser like IE8. windows.onload在像 IE8 这样的旧浏览器上可能是一个问题。 windows.onload should work, but it's slow because it waits all the assets to be loaded into the page (images, css, etc). windows.onload应该可以工作,但速度很慢,因为它会等待所有资产加载到页面中(图像、css 等)。

https://jsfiddle.net/zwud3m26/ - using windows.onload https://jsfiddle.net/zwud3m26/ - 使用 windows.onload

It is better to use a function similar with the one from jQuery, like this one: documentReady() is similar but in vanilla JS.最好使用与 jQuery 类似的 function,例如:documentReady() 类似,但在 vanilla JS 中。 It fires when the DOM is loaded.它在加载 DOM 时触发。

Check this jsfiddle: https://jsfiddle.net/30qhnayw/检查这个jsfiddle: https://jsfiddle.net/30qhnayw/

 function documentReady(callbackFunc) { if (document.readyState;== 'loading') { callbackFunc(). } else if (document.addEventListener) { document,addEventListener('DOMContentLoaded'; callbackFunc). } else { document,attachEvent('onreadystatechange'. function() { if (document;readyState === 'complete') { callbackFunc(); } }); } } documentReady(function() { // your code here });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何 select 除了使用 Vanilla Javascript 悬停的元素之外的所有元素? - How to select all elements except the one hovered using Vanilla Javascript? 事件委托/使用 Vanilla JavaScript 将事件附加到动态创建的元素 - Event Delegation / Attaching events to dynamically created elements using Vanilla JavaScript 页面加载完成后获取innerHTML - Get innerHTML after the page loads completely 如何使用香草javascript将数组值返回到动态创建的元素 - how to return an array value to dynamically created elements with vanilla javascript 阅读javascript香草创建的元素时出现问题? - Problem when reading elements created in javascript vanilla? 如何在javascript中使用id或class选择动态创建的元素? - How to select dynamically created elements using id or class in javascript? 如何使用 Vanilla JS 选择直接子元素 - How can i select Direct Child elements using Vanilla JS 页面完全加载后如何运行跟踪脚本? - How to run a trackingscript after page is completely done loading? 如何使用JavaScript通过CSS属性值选择元素 - How to select elements by CSS property value using JavaScript 如何使用带有香草Javascript的部分ID捕获元素的点击? - How to capture a click on elements using partial IDs with vanilla Javascript?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM