通过文档对象模型,将此标记用于有关其他语言与XML / HTML交互的问题。不要将其用作HTML,JavaScript或SAX的简写 - 使用其他标记来表示语言和标记。
在 JavaScript 中保存用户的 cookie 首选项
我有一个简单的cookie横幅,如果用户单击“接受”按钮,它会加载谷歌分析脚本。然后它会记住一个月的选择并且不会再出现。但是,如果用户...
在 Web 扩展中,我一直将模板元素从后台页面作为字符串传递到空的本地 HTML 文件,并使用 browser.tabs.insertCSS 和 browser.tabs.executeScript 传递 CSS ...
检查事件的目标是否在组件内,而不使用 stopPropagation()
我正在使用自定义选择, 我如何检查事件的目标是否在组件内,而不是使用 stopPropagation? 这样我就可以避免在全局范围内停止点击事件的传播...
当我单击一个框时,页面背景应该更改为框的颜色(正在发生),但我想要的是无论我最后单击哪个框,该框的颜色也应该改变。 我也是
我们有一些数据(10-50 列,数十万行),我们通常在 Excel 中将其可视化为折线图或堆积条形图。 用户希望能够放大和缩小图表以......
我想在页面上的 DOM 中编辑某些节点的内容,但是如果我使用 window.onload 执行此操作,则只有在整个页面加载后才能完成,并且可以看到节点的内容发生了变化。 那么,有没有...
您可以在不更改渲染数据的情况下更新 Vue Pinia 存储吗?或者更确切地说,只渲染一个数据更改?
我正在使用带有脚本设置的Vue3组合。我正在使用 pinia 商店。 我有一个 SPA,用户可以逐渐更改数据,这些数据存储在历史数组中。 可以重新创建所有的...
我正在尝试使用 DOM 解析 XML 文件,但最后仅输出最后一个条目多次(在循环中)。请告诉我,有什么问题吗? (我是Java初学者) XML 近似...
我不知道如何获取文本节点的元素,但我可以获取父元素。 我编写了一个 javascript 例程来使用范围进行选择。所以我有一个起始节点和结束节点......
我试图让一个按钮在列表中创建新条目,其显示类似于: “#1 新点击我” 除了我想让“Click Me”在黑框中显示为黄色文本,然后我想要......
我在互联网上浏览了很多文章询问两者之间的区别,但几乎每个人都解释了 Virtual DOM 和 Real DOM 之间的区别。根据我的目前...
无法让 ngx-infinite-scroll 监听窗口滚动
我正在尝试实现 ngx-infinite-scroll 我无法让它执行我想要的操作,即监听浏览器或窗口滚动,以便我可以滚动内容并在需要时加载。 发生了什么事我...
我在按钮元素中使用了 3 个 svg,其中一个是未选中的 svg,已选中并正在加载。默认情况下,未选中的设置为 1,而其余的为 0。我想将未选中的不透明度更改为零
公共静态字符串convertDocumentToString(文档xmlDocument){ TransformerFactory tf = TransformerFactory.newInstance(); 变压器变压器; 尝试 {
我目前有一个 JS 代码保存为书签的 url,它允许我在网站上搜索任何内容。我的代码是 javascript:window.location="https://dental.crm.dynamics.co...
示例: ... ... 示例: <div someAttr="parentDiv. We need to get it from child."> <table> ... <td> <div id="myDiv"></div> </td> ... </table> </div> 我想通过内部 div 元素(具有 myDiv 类的元素)中的某个选择器获取父级。 如何使用纯 JavaScript 实现这一目标,无需 jQuery? 类似: var div = document.getElementById('myDiv'); div.someParentFindMethod('some selector'); 您可以在现代浏览器中使用 closest(): var div = document.querySelector('div#myDiv'); div.closest('div[someAtrr]'); 使用对象检测提供 polyfill 或替代方法以向后兼容 IE。 这是最基本的版本: function collectionHas(a, b) { //helper function (see below) for(var i = 0, len = a.length; i < len; i ++) { if(a[i] == b) return true; } return false; } function findParentBySelector(elm, selector) { var all = document.querySelectorAll(selector); var cur = elm.parentNode; while(cur && !collectionHas(all, cur)) { //keep going up until you find a match cur = cur.parentNode; //go up } return cur; //will return null if not found } var yourElm = document.getElementById("yourElm"); //div in your original code var selector = ".yes"; var parent = findParentBySelector(yourElm, selector); 查找与给定选择器匹配的最接近的父元素(或元素本身)。还包括一个停止搜索的选择器,以防您知道应该停止搜索的共同祖先。 function closest(el, selector, stopSelector) { var retval = null; while (el) { if (el.matches(selector)) { retval = el; break } else if (stopSelector && el.matches(stopSelector)) { break } el = el.parentElement; } return retval; } 通过使用 querySelector() 和 closest() 方法可以获取父元素。 querySelector() 返回与 a 匹配的第一个元素 在文档中指定 CSS 选择器。 closest() 在 DOM 树中搜索最近的元素 与指定的 CSS 选择器匹配。 使用示例 const element = document.querySelector('td') console.log(element.closest('div')) <div> <table> <tr> <td></td> </tr> </table> </div> 如果需要选择多个元素,querySelectorAll() 是一个不错的选择。 querySelectorAll() 以静态 NodeList 对象的形式返回文档中与指定 CSS 选择器匹配的所有元素。 要选择所需的元素,需要在 [] 内指定它,例如第二个元素为: element[1] 在下面的示例中,closest()方法用于获取特定选定元素的父<tr>元素。 const el = document.querySelectorAll('td') console.log(el[1].closest('tr')) <div> <table> <tr id="1"> <td> First text </td> </tr> <tr id="2"> <td> Second text </td> </tr> </table> </div> 将 leech 的答案与 indexOf 一起使用(以支持 IE) 这是使用 leech 所说的,但使其适用于 IE(IE 不支持匹配): function closest(el, selector, stopSelector) { var retval = null; while (el) { if (el.className.indexOf(selector) > -1) { retval = el; break } else if (stopSelector && el.className.indexOf(stopSelector) > -1) { break } el = el.parentElement; } return retval; } 它并不完美,但如果选择器足够唯一,它就不会意外匹配到错误的元素。 这是一个递归解决方案: function closest(el, selector, stopSelector) { if(!el || !el.parentElement) return null else if(stopSelector && el.parentElement.matches(stopSelector)) return null else if(el.parentElement.matches(selector)) return el.parentElement else return closest(el.parentElement, selector, stopSelector) } 我想我会提供一个更强大的示例,也是用打字稿编写的,但它很容易转换为纯 JavaScript。该函数将使用“#my-element”之类的 ID 或“.my-class”类来查询父级,并且与其中一些答案不同的是,该函数将处理多个类。我发现我命名了一些类似的东西,所以上面的例子发现了错误的东西。 function queryParentElement(el:HTMLElement | null, selector:string) { let isIDSelector = selector.indexOf("#") === 0 if (selector.indexOf('.') === 0 || selector.indexOf('#') === 0) { selector = selector.slice(1) } while (el) { if (isIDSelector) { if (el.id === selector) { return el } } else if (el.classList.contains(selector)) { return el; } el = el.parentElement; } return null; } 按班级名称选择: let elementByClassName = queryParentElement(someElement,".my-class") 按 ID 选择: let elementByID = queryParentElement(someElement,"#my-element") 这是使用递归获取具有特定类的父级的简单方法。你可以修改它来根据选择器进行切换,但原理是一样的: function findParentByClass(child, parentClass) { let parent = child.parentElement; while(!(parent.className === parentClass)){ parent = findParentByClass(child.parentElement, parentClass) } return parent; } 函数parent_by_selector的简单示例,它返回父级或null(没有选择器匹配): function parent_by_selector(node, selector, stop_selector = 'body') { var parent = node.parentNode; while (true) { if (parent.matches(stop_selector)) break; if (parent.matches(selector)) break; parent = parent.parentNode; // get upper parent and check again } if (parent.matches(stop_selector)) parent = null; // when parent is a tag 'body' -> parent not found return parent; }; /* -------------------------------------------------- get a parent element by its id or classname [child] - the element were starting with [idOrClassName] - id or classname of parent element were looking for ------------------------------------------------- */ function getParent(child, idOrClassName = ""){ while(child.tagName.toLowerCase() != "body"){ // get the next parent up child = child.parentNode; // we reached body tag which means parent element with // class or id of [idOrClassName] not found so exit if(child.tagName.toLowerCase() == "body"){ return false; } // if the id of this element = [idOrClassName] or .classList // of [child] contains [idOrClassName], weve found our element if((child.id == idOrClassName) || (child.classList.contains(idOrClassName))){ return child; } } } 这是访问父ID的简单方法 document.getElementById("child1").parentNode; 将为您提供访问父级 div 的魔力。 <html> <head> </head> <body id="body"> <script> function alertAncestorsUntilID() { var a = document.getElementById("child").parentNode; alert(a.id); } </script> <div id="master"> Master <div id="child">Child</div> </div> <script> alertAncestorsUntilID(); </script> </body> </html> var base_element = document.getElementById('__EXAMPLE_ELEMENT__'); for( var found_parent=base_element, i=100; found_parent.parentNode && !(found_parent=found_parent.parentNode).classList.contains('__CLASS_NAME__') && i>0; i-- ); console.log( found_parent );
我在插入符号位置拆分标签内容时遇到一些问题。我可以获得分割索引以及分割后插入符号位置的标签内容。我面临的问题已显示
如何在 javascript 中使用 {{ form.as_p }}
我有一个问题,我是一名 Django 开发人员,在我的程序中我想编写一个 JavaScript 文件,当我们单击按钮时,脚本文件会创建一个新表单。 JavaScript 文件: 函数 noid(){ c...
我希望将子“.summary”元素隐藏在特定的父“#block-2”元素中。这段代码有效。 函数 myFunction(x, y) { const a = document.getElementByI...