- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个按字母顺序排序的项目列表。这个想法是从 alphabetArr
中注入(inject)一个相应的字母<li>
之后的数组使用来自 DOMElementsArr
的 ID大批。我做错了什么?
控制台中没有错误,但它不起作用。
数组:
let alphabetArr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p",
"q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
let DOMElementsArr = ['8MM', ... ,'Daddy_Day_Care']
这是我的方法:
//create function that injects new element
function insertAfter(el, referenceNode) {
referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);
}
//function that loops through both arrays
function injectAllAlphabetLetters(){
//Create new element
let newEl = document.createElement('li');
newEl.className = 'titles alphabet';
for (let i = 0; i < alphabetArr.length; i++){
console.log(alphabetArr[i]);
newEl.innerHTML = alphabetArr[i][0];
}
let ref;
for (let j = 0; j < DOMElementsArr.length; j++){
console.log(DOMElementsArr[j]);
ref = document.getElementById(DOMElementsArr[j]);
}
insertAfter(newEl, ref);
}
injectAllAlphabetLetters();
最佳答案
在您当前的代码中,您只是创建一个元素,然后迭代和更新其内容,然后在下一个循环中获取元素,最后您只调用 insertAfter
函数一次并使用最后一个值。
要使其工作,您必须合并两个循环,然后将插入代码移动到循环中。
//create function that injects new element
function insertAfter(el, referenceNode) {
referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);
}
//function that loops through both arrays
function injectAllAlphabetLetters() {
// iterate until last element of minimum length array(to avoid problem in case array length are different)
for (let i = 0; i < alphabetArr.length && i < DOMElementsArr.length; i++) {
//Create new element and set properties
let newEl = document.createElement('li');
newEl.className = 'titles alphabet';
newEl.innerHTML = alphabetArr[i][0];
// get the element based on id
let ref = document.getElementById(DOMElementsArr[i]);
// call function to insert
insertAfter(newEl, ref);
}
}
injectAllAlphabetLetters();
关于javascript - 无法使用 node.insertBefore() 方法注入(inject) DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55334669/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在使用此代码尝试在另一个元素之前添加新内容: var form = document.getElementsByClassName('commentresponse')[0], new
在此代码中: function comrespond(){ function addresform(){ var resid = this.getAttribute('id'),
我还创建了一个jsfiddle来演示我的问题。 我需要在标题之前有时间。 Title 1 Speaker 1 Time 1
使用 jquery 插入多个不同类的正确语法是什么。如果我想在 #container 之前插入 .one .two 和 . Three 该怎么办。 $(".one").insertBefore($('
我正在 jQuery 中执行 insertBefore $.post('/blah', { blah : "some data" }, function(response) { $(respon
如果索引大于实际行数,我不会追加任何内容? var elm = $('tr', tbl).eq(index); if(elm){ row.insertBefore(elm); } else{
我有一个小对象,它必须将新行附加到表中。在大多数情况下它工作正常,但如果某些行中有一个表(在“根”表中),则该对象不会附加到正确的表格!? 我一直在进行一些调试,并找到了全部出错的行。如果设置了 DE
好吧,我一直在研究我的第一个单链表项目,但遇到了困难。我试图实现的算法之一是在用户指定的节点之前插入一个节点。我遇到的问题是,当插入节点时,它被放置在正确的位置,但它也会删除它之前的所有节点。如果我的
我在 JS 中使用 insertbefore() 函数: $('').insertBefore("div.col-lg-9.col-md-9.col-sm-9.col-xs-12"); 但是,当“di
我有一个元素数组,我想在遍历数组时对每个元素使用 inserBefore。它应该在数组中的每个元素之后添加要插入的元素,但它只将它添加到数组中的最后一个元素。我认为这是一个闭包问题,但即使在使用闭包之
https://jsfiddle.net/072uwd1k/ 我正在尝试更改要放置在文本上方的数字位置,使用 insertBefore 就是这样做的,但它会复制其中的 div 数量。
这个问题在这里已经有了答案: Uncaught NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
在this示例说明 insertBefore() 方法的第二个参数是可选的: The child node you want to insert the new node before. When n
我正在使用 Javassist 将 logback 记录器注入(inject) jar。 在记录器的模式中,我记录行号以及其他细节,如时间、线程、文件等。 使用 ctMethod.insertAfte
我有这个片段,如果屏幕宽度低于 767px,它会将辅助包装器的位置切换到主包装器上方。这很有效,但它只适用于刷新。如何让它在屏幕宽度改变时自动工作? 谢谢!这里完全是新手。 jQuery(docume
我有表,我需要按可用索引对列进行排序(仅 VanilaJS 而不是 jQuery)。我怎样才能做到呢?请参阅示例http://jsfiddle.net/mcqueen/AXF2Y/3/ . 最佳答案
问题 我有几行简单的代码,但无法理解为什么 .insertBefore 每隔四次点击就不起作用。 HTML 1 2 3 change Javascript var but
试图使我在 this 上的回答更加灵活问题: function invertDivs(parentDiv) { var first = document.getElementById(parent
我制作了一个简单的脚本,允许用户使用向上和向下按钮对 div 进行排序。 jsFiddle:http://jsfiddle.net/dZ6rC/5/ 不幸的是,我尝试在鼠标单击时设置移动动画并不会导致
我是一名优秀的程序员,十分优秀!