dom 相关问题

通过文档对象模型,将此标记用于有关其他语言与XML / HTML交互的问题。不要将其用作HTML,JavaScript或SAX的简写 - 使用其他标记来表示语言和标记。

Bootstrap 5 Carousel 在页面加载后不会自动播放

这个标准 Bootstrap 5 轮播代码... 这个标准 Bootstrap 5 轮播代码... <div id="carouselExampleSlidesOnly" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-inner"> <div class="carousel-item active"> <img src="1.jpg" class="d-block w-100" alt="..."> </div> <div class="carousel-item"> <img src="2.jpg" class="d-block w-100" alt="..."> </div> </div> </div> ...页面加载时在 html 文件中自动播放。 但是,当页面加载后将相同的代码添加到 DOM 时: $('#previous-div').after(carouselHTML); ...轮播不会自动播放。 页面加载后将轮播添加到 DOM 时,我需要采取哪些步骤才能让轮播自动播放? 根据 docs,具有 data-bs 属性的 Carousel 组件会在页面加载时自动初始化,因此稍后添加它们将不起作用。 因此,您可以使用 JavaScript 手动实例化它。 您似乎使用的是 jQuery,因此 BS 组件自动可用,因此您可以通过将 cycle 传递给 .carousel 方法来实例化轮播: $('#previous-div').after($(carouselHTML).carousel('cycle')); 演示: <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> <title>Bootstrap Example</title> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> </head> <body> <div id="previous-div"></div> <script> $(document).ready(function() { const carouselHTML = ` <div id="carouselExampleSlidesOnly" class="carousel slide"> <div class="carousel-inner"> <div class="carousel-item active"> <img src="https://placehold.co/300x200" class="d-block w-100" alt="..."> </div> <div class="carousel-item"> <img src="https://placehold.co/300x200" class="d-block w-100" alt="..."> </div> </div> </div> `; $('#previous-div').delay(2000).after($(carouselHTML).carousel('cycle')); }); </script> </body> </html>

回答 1 投票 0

如何让Form元素在JS中引用时正确工作?

我正在对如何在 JavaScript 中使用表单元素进行简单的实际测试,但我不太明白出了什么问题。我检查了网络浏览器的萤火虫,控制台没有给出错误,...

回答 1 投票 0

File 对象中 webkitRelativePath 属性的用途是什么?

如果您在 Chrome 控制台中打印 File 对象,如下所示: 您会在其他属性中看到始终为空的

回答 1 投票 0

如何在 Laravel 中使用中继器渲染子组件中的数据

我在 Laravel 应用程序中有一个父组件和子组件,并且希望为数组中的每个元素渲染一个 TextInput。 但是,我在将数据从父级传递给子级时遇到问题。它是...

回答 1 投票 0

控制台日志不显示属性

我的代码使用下面的 HTML。 这是 ID 为“myId”的元素的原始内容。 <... 我的代码使用下面的 HTML。 <body> <div id="myId" class="oldClass"> This is the original content of the element with ID "myId". </div> </body> 我正在使用下面的DOM Manipulation执行JavaScript Code: const myElement = document.getElementById('myId'); myElement.setAttribute('data-example', 'value'); console.log(myElement); myElement.removeAttribute('data-example'); console.log(myElement); 但是,first console.log() statement 不显示 data-example 属性。 <div id="myId" class="oldClass"> This is the original content of the element with ID "myId". </div> 您遇到的问题与浏览器处理 console.log() 的方式及其处理 DOM 元素的方式有关。当您使用 console.log(myElement) 时,它会记录对 DOM 节点的引用,而不是该节点当时的静态快照。如果您在记录后操作 DOM,当您在浏览器的开发人员工具中展开记录的元素引用时,这些更改将反映在记录的元素引用中。 为了避免这种混乱并在记录元素时捕获它存在的元素,您可以直接记录特定的属性或值,而不是元素引用。

回答 1 投票 0

使 ReactDOM.createPortal 插入元素作为目标容器的第一个子元素(而不是最后一个子元素)

所以我使用 ReactDOM.createPortal 在正常 DOM 放置之外渲染一个元素。我必须这样做,因为我正在与一个创建它自己的元素的库进行交互(超出我的范围)并且我

回答 3 投票 0

如何使用打字稿制作 HTML 代码?

我没有 javascript 和 typescript 的经验。当我使用 PHP 时,我将导航栏制作成一个可以回显 html 代码的函数。这也可以使用打字稿来实现吗?我做了一个功能...

回答 1 投票 0

php DOMElement->replaceWith() 的奇怪问题

我看到一些奇怪的行为,但我无法调试。该代码来自 WordPress 短代码变体的简单实现。 代码循环遍历 DOMNodeList(自定义...

回答 1 投票 0

操纵 XML 元素属性的顺序

我读过很多帖子,人们询问如何对 XML 元素强制执行某种属性顺序,一般的回答是它不合法/必需/允许/相关/其他。 我不是...

回答 3 投票 0

Cypress 如何处理点击?

这是HTML代码 属性 ...

回答 1 投票 0

无法选择 div 元素的类并向该元素添加另一个类

我正在做这个 GPS 项目,遇到了一个问题。我想构建一个由 360x180 网格项组成的网格,每个网格项代表一个 GPS 坐标,它动态地获取自己的...

回答 2 投票 0

Safari 的 getBoundingClientRect() 实现返回不正确的顶部

我有一个带有 float: right 的 div,我试图获取它与视口顶部的距离。在除 Safari 之外的每个浏览器中,我都从 element.getBoundingClientRect() 获得了预期的结果....

回答 4 投票 0

为什么表单按钮对页面 DOM 所做的更改在一段时间后会自动恢复?

我想要做的是交换两个 HTML DOM 节点。 让我们采用以下 HTML 列表和下面的交换按钮: 0 ... 我想要做的是交换两个 HTML DOM 节点。 让我们采用以下 HTML 列表和下面的交换按钮: <ul class="center-text"> <li>0</li> <li>1</li> <li>2</li> </ul> <form class="center-text"> <button id="swapButton">Swap</button> </form> 这是我的 JS 代码: // the "ready" method is the only jQuery method used in the code $(document).ready(function(){ document.getElementById("swapButton").onclick = function() { var ul = document.getElementsByTagName("ul")[0]; // pseudo-swapping: insert "child2" before "child0" // (indexes are 1 and 5 because of the TextNodes between list nodes) ul.insertBefore(ul.childNodes.item(5), ul.childNodes.item(1)); } }); 因此,单击交换按钮时会发生以下情况: 物品确实被交换了。但不知何故,在(比方说 1/4)秒后,它们会恢复到原来的位置,即自动交换回来。 我的问题是:为什么? PS:该代码仅用于教育目的,我只是尝试了解幕后发生的事情,所以请不要发布任何替代的 jQuery 方法。 $(document).ready(function(){ document.getElementById("swapButton").onclick = function(e) { e.preventDefault(); var ul = document.getElementsByTagName("ul")[0]; ul.insertBefore(ul.childNodes.item(5), ul.childNodes.item(1)); } }); 这是因为按钮将页面重定向到同一页面。并恢复全部。您需要防止按钮的默认行为。

回答 1 投票 0

JavaScript id 详细信息显示一个结果,与 id 无关

我正在使用 NY Times api 使用 javascript 创建一个图书应用程序,用户可以通过单击任何一本书来查看图书详细信息。我使用来自 a...的 Primary_isbn10 为每本书指定了不同的 id...

回答 1 投票 0

如何将事件委托添加到单选按钮上的“更改”事件(而不是单击)?

我经常使用类似代码的父元素上的“click”事件轻松实现事件委托 HTML: 我经常使用类似代码的父元素上的“单击”事件轻松实现事件委托 HTML: <div> <span> <input type="radio" id="all0" name="difficulty-ask" class="difficultyaskclass" value="all" checked="checked" /> <label for="all0">All</label> <input type="radio" id="2easy1" name="difficulty-ask" class="difficultyaskclass" value="easy" /> <label for="2easy1">Easy</label> <input type="radio" id="2med2" name="difficulty-ask" class="difficultyaskclass" value="medium" /> <label for="2med2">Medium</label> <input type="radio" id="2hard3" name="difficulty-ask" class="difficultyaskclass" value="hard" /> <label for="2hard3">Hard</label> </span> </div> JS: parentelement.addEventlistener('click', (event) => { if(event.target.classList.contains('targetelement'){Code..}}; (父元素只是一个常规的div,其中放置了单选按钮) 如果单选按钮切换状态,它现在如何处理“更改”事件? 我首先通过循环遍历所有这些,然后为每个添加一个事件监听器来使其工作。但这显然不是理想的解决方案,我肯定需要一些事件委托。 您可以使用 input 事件,该事件对任何表单元素也有效 演示: const myForm = document.forms['my-form']; myForm.addEventListener('submit', e => { e.preventDefault(); // disable submit - page reload const formValues = Object.fromEntries(new FormData(myForm).entries()); console.log( formValues ); setInterval(console.clear,8000); }) myForm.addEventListener('input', e => { if (!e.target.matches('input[type="radio"]')) return; console.log(myForm['difficulty-ask'].value); setInterval(console.clear,2000); });label { display:block; } fieldset { width: fit-content; }<form name="my-form"> <fieldset> <legend> difficulty </legend> <label> <input name="difficulty-ask" type="radio" value="all" checked > All </label> <label> <input name="difficulty-ask" type="radio" value="easy" > Easy </label> <label> <input name="difficulty-ask" type="radio" value="medium" > Medium </label> <label> <input name="difficulty-ask" type="radio" value="hard" > Hard </label> </fieldset> <button>submit</button> </form>

回答 1 投票 0

如何在不操作DOM的情况下以角度操作/复制ElementRef?

我有一个近 200 行的格式化 html 表格,我必须将其导出为 PDF。目前我正在使用 jsPDF 库。 制作PDF() { var elWidth = this.el.nativeElement.getBoundingClientRect().width ...

回答 1 投票 0

如何将元素数组转换为 NodeList?

首先,这不是问如何将 NodeList 转换为 Array。这是相反的。 为了保持一致性,我想创建一个返回 NodeList 的函数,就像...

回答 2 投票 0

如何使用 JavaScript fetch 方法更新 DOM 以从 API 过滤用户数据?

我希望从 API 获取数据并使用 JavaScript 获取功能在 HTML 页面中显示。 JavaScript 代码详述如下。我可以从API读取用户数据的console.log。然而,n...

回答 1 投票 0

即使在 tic tac toe 游戏中轮到玩家二后,事件侦听器也会添加到玩家一

回合确实切换,新选择的点被添加到playerTwo数组中,但它也被添加到playerOne中。我已经移动了部分代码,但这并不能解决问题。 const 游戏板 = ((...

回答 1 投票 0

将 HTML 字符串附加到 DOM

如何附加 HTML 字符串,例如 var str = '这里只是一些文字'; 到带有 id 测试的 ? (顺便说一句 div.innerHTML += str; 是不可接受的。) 如何附加 HTML 字符串,例如 var str = '<p>Just some <span>text</span> here</p>'; 到 id 为 <div> 的 test? (顺便说一句div.innerHTML += str;是不可接受的。) 使用 insertAdjacentHTML 当前所有浏览器都支持: div.insertAdjacentHTML( 'beforeend', str ); 位置参数beforeend将添加到元素内部,在其最后一个子元素之后。 现场演示:http://jsfiddle.net/euQ5n/ 性能 AppendChild (E) 比 Chrome 和 Safari 上的其他解决方案快 2 倍以上,insertAdjacentHTML(F) 在 Firefox 上速度最快。 innerHTML= (B)(不要与 += (A) 混淆)是所有浏览器上第二快的解决方案,它比 E 和 F 方便得多。 详情 设置环境 (2019.07.10) Chrome 75.0.3770 (64 位)、Safari 11.1.0 (13604.5.6)、Firefox 67.0.0 (64 位) 上的 MacOs High Sierra 10.13.4 Chrome E(每秒 140k 操作)最快,B (47k) 和 F (46k) 次之,A (332) 最慢 在 Firefox 上 F (94k) 最快,然后是 B(80k)、D (73k)、E(64k)、C (21k) 最慢的是 A(466) 在 Safari 上 E(207k) 最快,然后是 B(89k)、F(88k)、D(83k)、C (25k),最慢的是 A(509) 您可以在您的机器上重播测试这里 function A() { container.innerHTML += '<p>A: Just some <span>text</span> here</p>'; } function B() { container.innerHTML = '<p>B: Just some <span>text</span> here</p>'; } function C() { $('#container').append('<p>C: Just some <span>text</span> here</p>'); } function D() { var p = document.createElement("p"); p.innerHTML = 'D: Just some <span>text</span> here'; container.appendChild(p); } function E() { var p = document.createElement("p"); var s = document.createElement("span"); s.appendChild( document.createTextNode("text ") ); p.appendChild( document.createTextNode("E: Just some ") ); p.appendChild( s ); p.appendChild( document.createTextNode(" here") ); container.appendChild(p); } function F() { container.insertAdjacentHTML('beforeend', '<p>F: Just some <span>text</span> here</p>'); } A(); B(); C(); D(); E(); F();<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> This snippet only for show code used in test (in jsperf.com) - it not perform test itself. <div id="container"></div> 这样可以接受吗? var child = document.createElement('div'); child.innerHTML = str; child = child.firstChild; document.getElementById('test').appendChild(child); jsFiddle. 但是,尼尔的答案是一个更好的解决方案。 这个想法是在中间元素上使用 innerHTML,然后通过 appendChild 将其所有子节点移动到您真正想要的位置。 var target = document.getElementById('test'); var str = '<p>Just some <span>text</span> here</p>'; var temp = document.createElement('div'); temp.innerHTML = str; while (temp.firstChild) { target.appendChild(temp.firstChild); } 这可以避免清除 div#test 上的任何事件处理程序,但仍然允许您附加 HTML 字符串。 正确的方法是使用insertAdjacentHTML。在 Firefox 8 之前的版本中,如果您的 Range.createContextualFragment 不包含 str 标签,您可以回退到使用 script。 如果您的 str 包含 script 标签,则需要在插入片段之前从 script 返回的片段中删除 createContextualFragment 元素。否则,脚本将运行。 (insertAdjacentHTML 标记脚本不可执行。) 快速破解: <script> document.children[0].innerHTML="<h1>QUICK_HACK</h1>"; </script> 用例: 1:另存为.html文件并在chrome或firefox或edge中运行。 (IE不能用) 2:在http://js.do中使用 实际行动: http://js.do/HeavyMetalCookies/quick_hack 细分评论: <script> //: The message "QUICK_HACK" //: wrapped in a header #1 tag. var text = "<h1>QUICK_HACK</h1>"; //: It's a quick hack, so I don't //: care where it goes on the document, //: just as long as I can see it. //: Since I am doing this quick hack in //: an empty file or scratchpad, //: it should be visible. var child = document.children[0]; //: Set the html content of your child //: to the message you want to see on screen. child.innerHTML = text; </script> 我发帖的原因: JS.do 有两个必备条件: 没有自动完成功能 垂直显示器友好 但不显示console.log消息。 来到这里寻找快速解决方案。 我只想看看结果 几行暂存器代码, 其他解决方案的工作量太大。 这个可以解决 document.getElementById("list-input-email").insertAdjacentHTML('beforeend', '<div class=""><input type="text" name="" value="" class="" /></div>'); InnerHTML 清除现有节点的所有数据,例如事件 使用firstChild附加子项仅将第一个子项添加到innerHTML。例如,如果我们必须附加: <p>text1</p><p>text2</p> 仅显示text1 这个怎么样: 通过附加子项将特殊标签添加到innerHTML,然后通过删除我们创建的标签来编辑outerHTML。不知道它有多聪明,但它对我有用 或者您可以将outerHTML更改为innerHTML,这样就不必使用函数replace function append(element, str) { var child = document.createElement('someshittyuniquetag'); child.innerHTML = str; element.appendChild(child); child.outerHTML = child.outerHTML.replace(/<\/?someshittyuniquetag>/, ''); // or Even child.outerHTML = child.innerHTML }<div id="testit"> This text is inside the div <button onclick="append(document.getElementById('testit'), '<button>dadasasdas</button>')">To div</button> <button onclick="append(this, 'some text')">to this</button> </div> 为什么不可接受? document.getElementById('test').innerHTML += str 将是教科书式的做法。 最短 - 18 个字符(不要混淆 +=(OP 提及)与 = 更多详细信息此处) test.innerHTML=str var str = '<p>Just some <span>text</span> here</p>'; test.innerHTML=str<div id="test"></div> 我的问题的答案就是这样;一个带有空值的简单 Map;我所能得到的只是一个非常沉重且不精确的答案。我想知道谁结束了我的问题...甚至懒得阅读 "use strict" try { const fruits = new Map([["Banana",""],["Apples", ""], ["Orange"," "]]); let text = "<h1>Fruits</h1>" + "<ul>"; fruits.forEach(function(value, key){ text += "<li>" + key + value + "<br>" + "</li>" }); text +="</li> "; document.getElementById('demo').innerHTML = text; } catch(err){ document.getElementById('theError').innerHTML = err; }

回答 11 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.