问题描述
我正在wordpress中工作,试图为网格中的每个组合卡片添加摘录(我无法通过主题来做到这一点。
这是我正在使用的自定义脚本。一切都按预期工作,除了只有列表中的最后一个节点才摘录。我已经更改了迭代次数以进行测试,并且总是将摘录插入要迭代的最后一个节点。
基于此,似乎每个新迭代都会撤消或擦除以前的迭代。
window.onload = function() {
const targets = document.querySelectorAll('.entry-header');
const parent = document.createElement('div');
const child = document.createElement('p');
const excerpt = 'This will be the excerpt...';
parent.className = "entry-excerpt";
parent.appendChild(child);
child.innerHTML = excerpt;
for (let i = 0; i < targets.length; i++) {
targets[i].after(parent);
}
};
我记录了目标[i],每次迭代都能正确打印
解决方法
您只有一个parent
元素,可访问页面上的条目标题。
您应该尝试将所有内容放入循环中。因为我假设每个条目的摘录都不同,所以您应该创建一种方法来动态生成它们或从某个地方获取它们。
const targets = document.querySelectorAll('.entry-header');
window.onload = function() {
for (let i = 0; i < targets.length; i++) {
parent = getExcerpt(i);
targets[i].after(parent);
}
};
function getExcerpt(index) {
const parent = document.createElement('div');
const child = document.createElement('p');
const excerpt = 'This will be the excerpt...';
parent.className = "entry-excerpt";
parent.appendChild(child);
child.innerHTML = excerpt;
return parent;
}
,
请将父级放入循环中。查看以下示例
const targets = document.querySelectorAll('.entry-header');
for (let i = 0; i < targets.length; i++) {
const parent = document.createElement('div');
const child = document.createElement('p');
const excerpt = 'This will be the excerpt...';
parent.className = "entry-excerpt";
parent.appendChild(child);
child.innerHTML = excerpt;
targets[i].after(parent);
}
<div class="entry-header">Entry Header 1</div>
<div class="entry-header">Entry Header 2</div>
<div class="entry-header">Entry Header 3</div>