dom 相关问题

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

在javascript中获取href和src属性的原始值

给定一个 HTML 元素,我想使用 Javascript 获取其 src 属性的原始值。 如果 src 值为相对路径,则 element.src 返回绝对路径。 例如: //ssss.com ==> h...

回答 3 投票 0

使用 JavaScript 删除 head 标签内的 noscript 标签

我正在尝试使用 JavaScript 删除 标签。但迄今为止的每一次尝试都失败了。 我尝试过这些: // noscript 标签有一个 id。我通过这个 id 访问它 var noscript = 窗口。</desc> <question vote="0"> <p>我正在尝试使用 JavaScript 删除 <pre><code>&lt;noscript&gt;</code></pre> 标签。但迄今为止的每一次尝试都失败了。</p> <p>我尝试过这些:</p> <pre><code>// The noscript tag has a id. I&#39;m accessing it over this id var noscript = window.document.getElementById(&#34;noscript_with_id&#34;); noscript.parentNode.removeChild(noscript); // noscript.parentNode is null noscript.outerHTML = &#34;&#34;; // doesn&#39;t do anything noscript.innerHTML = &#34;&#34;; // doesn&#39;t do anything </code></pre> <p>我不能使用 jQuery。只是简单的 JavaScript。</p> <p>由于我通过特定 ID 访问元素并使用其内容,因此可行的解决方案可能是更改 ID 或清空内容。我需要删除它,因为使用该元素的代码可能会执行多次。</p> <p>noscript 标签位于 <pre><code>&lt;head&gt;</code></pre> 标签内。我用它来异步加载一些样式表。</p> <p>我设置了一个有问题的页面。 <a href="https://blitz.icon-craft.net/layout_test/" rel="nofollow">https://blitz.icon-craft.net/layout_test/</a><br/> 检查控制台并<a href="https://blitz.icon-craft.net/includes/js/loadCSS.js" rel="nofollow">https://blitz.icon-craft.net/includes/js/loadCSS.js</a></p> <p><em>(我想指出,这个网站实际上使用了 jQuery。但我计划在不使用它的网站上使用该脚本。仅对于这个小脚本,包括 jQuery 是没有任何意义的。)</em></p> </question> <answer tick="false" vote="2"> <p>假设 <pre><code>&lt;head&gt;</code></pre> 标签是父标签。 </p> <pre><code>var noscript = document.getElementsByTagName(&#39;noscript&#39;); var parent = document.getElementsByTagName(&#39;head&#39;)[0]; for(var i in noscript) { parent.removeChild(noscript[i]); } </code></pre> <p>我在 SO 网站上对此进行了测试,它有效。 <pre><code>noscript</code></pre> 标签位于 <pre><code>body</code></pre> 标签内,因此选择 <pre><code>body</code></pre> 标签的代码明显不同。 </p> <p>如果 <pre><code>noscript</code></pre> 标签具有不同的父级,则会失败。只有那些范围在您选择的父级范围内的才会被删除。</p> </answer> <answer tick="true" vote="2"> <p>我发现了问题所在。删除元素的工作原理与此处描述的多次相同,就像我正在做的那样。</p> <p>问题是我更改了父级的内容(在本例中为 <pre><code>&lt;head&gt;</code></pre> 标签),因此我保存在变量中的对象变得无效。</p> <p>这是不起作用的代码:</p> <pre><code>var noscript = window.document.getElementById(&#34;some_id&#34;); var head = window.document.getElementsByTagName(&#34;head&#34;)[0]; head.innerHTML += noscript.innerHTML; // After that noscript is no longer valid head.removeChild(noscript); // Won&#39;t work </code></pre> <p>以下内容将起作用:</p> <pre><code>var noscript = window.document.getElementById(&#34;some_id&#34;); var head = window.document.getElementsByTagName(&#34;head&#34;)[0]; var content = noscript.innerHTML; head.removeChild(noscript); head.innerHTML += content; </code></pre> <p>无论如何,谢谢你的帮助。</p> </answer> <answer tick="false" vote="1"> <p>首先需要确保调用javascript时该标签存在。我通过等待所有元素、图像和脚本都已加载来完成此操作。</p> <p>接下来,您不需要使用 id - 您可以使用任意数量的方法来获取它。 getElementsByTagName 返回的 NodeList 是 <em>live</em>,因此,更改大小以反映对其表示的元素集合的操作 - 这就是为什么只需要一次调用 <pre><code>getElementsByTagName</code></pre>。</p> <p>我忘记了具体内容,但前几天我读到过。 querySelector/querySelectorAll 可能是奇怪的 - 返回一个不会像文档那样改变的数组。不知道,无论如何,这里可能大多无关紧要。</p> <p>这是一个工作示例:</p> <p><strong>编辑:</strong>代码已更改。 (1) 按下按钮时触发,这样您就可以在浏览器的 JS 工具的 DOM 查看器中看到效果。 (2) 将noscript标签移至头部</p> <pre><code>&lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;noscript&gt;You appear to have javascript disabled&lt;/noscript&gt; &lt;script&gt; window.addEventListener(&#39;load&#39;, onDocLoaded, false); function onDocLoaded(evt) { // nukeNoscripts(); } function nukeNoscripts() { var tgtTags = document.getElementsByTagName(&#39;noscript&#39;); alert(&#34;Num of noscript tags: &#34; + tgtTags.length); var tgt = tgtTags[0]; tgt.parentNode.removeChild(tgt); alert(&#34;Num of noscript tags: &#34; + tgtTags.length); } &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;button onclick=&#39;nukeNoscripts()&#39;&gt;NUKE&lt;/button&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> </answer> <answer tick="false" vote="0"> <p>使用 JavaScript 删除 noscript 标签 </p> <pre><code>var noscr = document.getElementsByTagName(&#39;noscript&#39;).length; for(var yh = 0;yh&lt;noscr;yh++) {document.getElementsByTagName(&#39;noscript&#39;)[0].remove();} </code></pre> </answer> <answer tick="false" vote="0"> <p>所有答案都不适合我,而且我的正文中有“noscript”标签。下面的代码最终起作用了:</p> <pre><code>var elem = document.querySelector(&#39;noscript&#39;); elem.parentNode.removeChild(elem); </code></pre> </answer> <answer tick="false" vote="0"> <p>这是一个简单的方法来做到这一点</p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code>document.querySelectorAll(&#34;[unwrap]&#34;).forEach(function(a){a=a.textContent;a=document.createRange().createContextualFragment(a);document.body.appendChild(a)});</code></pre> <pre><code> &lt;noscript unwrap&gt; &lt;link href=&#34;some_css.css&#34; rel=&#34;stylesheet&#34;&gt; &lt;h1&gt;Hello World&lt;/h1&gt; &lt;/noscript&gt;</code></pre> </div> </div> <p></p> </answer> </body></html>

回答 0 投票 0

如何使用 jquery 删除 noscript 标签包装?

我想删除环绕图像的 noscript 标签: <img src="some_image.jpg"> 我尝试了 unwrap(),...

回答 6 投票 0

如何在 React Web 应用程序 (Firefox) 中重置视频和源 DOM 内存组

我正在开发一个实时媒体播放器 React 应用程序,该应用程序在浏览器(特别是 Firefox)中交替显示全屏和元素。 我特别关心的是记忆。

回答 1 投票 0

如何使用querySelector从列表中删除特定元素?

我设置了一个带有两个标题和两个按钮的网页。在按下任何按钮之前,该网页看起来与以下内容完全相同: Counter-1:(某个数字) [按钮] Counter-2:(某个数字) [按钮] ...

回答 1 投票 0

原生 JS 相当于 jQuery 委托

动态创建的 dom 元素上的事件委托的本机实现是什么? 我尝试查看 jQuery 源代码,但无法遵循 .on 方法。 注意:目前我附上 ev...

回答 7 投票 0

为什么 document.getElementById 不能在函数中工作

`为什么它在函数之外工作?怎么了?我不明白......尝试添加返回语句 - 仍然没有。 [[在此处输入图像描述](https://i.stack.imgur.com/ZWAvj.png)](https...

回答 1 投票 0

CSS 中的堆叠

我正在尝试理解CSS中的堆叠。根据我在网上阅读的内容,以下是堆叠顺序: 构成堆叠上下文的元素的背景和边框 定位后代...

回答 1 投票 0

如何访问文档对象模型?

我正在学习如何使用 javascript 操作 DOM。 我理解JS只能在浏览器环境中访问DOM,因为DOM只能在浏览器中使用,而JS,是一个“

回答 1 投票 0

querySelectorAll 未在递归函数内返回更新的节点列表

我正在尝试抓取将来创建的 DOM 中的一个元素。为了简单起见,当用户通过单击上传按钮上传图像时,会在 DOM 中创建一个 div,它有一个类 ...

回答 1 投票 0

获取被激发(触发)的事件的名称(类型)

我有以下代码: $('#button').on('点击更改', function() { alert('谁解雇了我,点击还是更改?'); }); 我如何知道调用的事件是“单击”还是“更改”?

回答 3 投票 0

如何定位具有相同类名和文本的元素,如下所示

我需要单击列表中的元素,但无法单击我正在使用的元素(//[@class="pb-dropdown__contents pb-dropdown__contents--no-margin pb-dropdown__con ...

回答 1 投票 0

为什么代码不允许网页向下滚动?

从 selenium 导入 webdriver # 创建网络驱动实例 驱动程序 = webdriver.Chrome() # 导航到页面 driver.get('https://www.youtube.com/@freecodecamp/videos') # 向下滚动到

回答 1 投票 0

localStorage Javascript代码可以在HTML文件中工作,但不能在Javascript文件中工作,我已经尝试了很多StackOverflow解决方案

我正在尝试使用基本的本地存储方法。它们在 HTML 中完美工作,但在独立的 Javascript 文件中不起作用。 HTML 代码(作品): 我正在尝试使用基本的本地存储方法。它们可以在 HTML 中完美查找,但不能在独立的 Javascript 文件中工作。 HTML 代码(有效): <!DOCTYPE html> <html> <head> <title>Test Javascript</title> <meta name="description" content="Our first page"> <meta name="keywords" content="html tutorial template"> <script> document.addEventListener("DOMContentLoaded", function(event) { localStorage.setItem("Name", "Jeff"); console.log(localStorage.getItem("Name")); }); </script> </head> <body> Content goes here. </body> </html> JS 代码(不起作用): document.addEventListener("DOMContentLoaded", function(event) { localStorage.setItem("Name", "Jeff"); console.log(localStorage.getItem("Name")); }); 或 document.addEventListener("load", function() { localStorage.setItem("Name", "Jeff"); console.log(localStorage.getItem("Name")); }); 或 document.addEventListener("DOMContentLoaded", function() { localStorage.setItem("Name", "Jeff"); console.log(localStorage.getItem("Name")); }, false); 或 window.onload = function() { localStorage.setItem("Name", "Jeff"); console.log(localStorage.getItem("Name")); } 以下是我尝试过的解决方案: 使用document.addEventListener("DOMContentLoaded", function(event) {}); 使用document.addEventListener("load", function() {}); 使用document.addEventListener("DOMContentLoaded", function() {}, false); 使用window.onload = function() {} 使用window.onload = function() {}(再次) 使用window.onload = function() {}(再次...) 运行 js 文件时,我仍然得到相同的结果:localStorage 中没有任何反应,并且我在控制台中看不到任何内容。 我不知道从这里去哪里,任何帮助将不胜感激。 Web 浏览器仅在加载了 <script> 元素的 HTML 文档上下文中执行 JavaScript(src 属性允许从 URL 加载脚本,而不是嵌入到 HTML 文档中)。 (让我们忽略浏览器扩展、将内容粘贴到开发人员工具和书签中,因为它们与此处无关)。 只需输入 JavaScript 程序的 URL 即可使其源代码显示在主视口中。它不会执行代码。没有办法让它执行 HTML 文档之外的代码。

回答 1 投票 0

脚本标签上的事件监听器

我创建了CSE(自定义搜索引擎) 我...

回答 1 投票 0

使用 ID 从本地存储中删除项目

我希望能够删除我的车辆列表页面上的项目。当我单击“删除车辆”按钮时,似乎 ID 没有被传递,因为没有删除任何内容。以下是我的车辆清单和

回答 1 投票 0

如何在innerHTML中使用三元条件运算符

如何在element.innerHTML中正确使用三元运算符? el.innerHTML = { `标题 ${菜单打开&& ` 已打开 如何在element.innerHTML中正确使用三元运算符? el.innerHTML = { `<span>title</span> ${menuOpened && `<div> <span>opened</span> </div>` } ` } 我认为你不能在另一个`内部字符串模板中使用字符串模板。我可能是错的,但我会使用其他引用来解决它。 el = {}; menuOpened = true el.innerHTML = `<span>title</span> ${menuOpened && '<div><span>opened</span></div>' } `; console.log(el) 当然,您可以在单行模板中完成此操作,但为了代码的可读性,您可以以经典方式将其拆分为多个步骤,请检查内联注释: // Set your must have html let html = `<span>title</span>`; // Pre-set condition for example purpose const menuOpened = true; // Append html if condition is true if(menuOpened) html += `<div><span>opened</span></div>`; // Then inner html // For now we'll just console log it console.log(html); 但是如果您有更复杂的 html 并且需要插入数据,而不是像您的情况那样添加数据,那么: // Pre-set condition for example purpose const menuOpened = true; // Set code for menu const menu = menuOpened ? `<div><span>opened</span></div>` : ''; // Set your html template const html = `<div><span>title</span>${menu}</div>`; // Then inner html // For now we'll just console log it console.log(html);

回答 2 投票 0

获取jquery数据表中选定行/行的列值

我被以下代码困住了。我想获取数据表中选定行/行的列值。我已经使用这个代码 数据表代码: var table = $('#tableId').DataTable({ “阿贾克斯”:{...

回答 2 投票 0

函数外的变量,尝试了正则表达式但似乎无法使其工作

我有一个函数,可以删除班级末尾的数字并将其替换为随机数字。但我必须在函数之前声明一个变量才能使其工作。这只是一个随机的...

回答 1 投票 0

querySelector() 和 getElementBy[Id/ClassName/TagName] 有什么区别?

我不明白使用 querySelector() 和 getElementById() 之间的区别。我知道 querySelector 通过使用任何选择器来检索元素,这使得它更加通用......

回答 1 投票 0

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