将 html 内容添加到生成的 js class
Add html content to js generated class
我有一个小问题需要你的帮助。感谢你,我有 2690 个由 js 生成的方块:
var i, square, text, container = document.getElementById("square_container");
for (i = 1; i <= 2690; i += 1) {
square = document.createElement("div");
square.id = "square" + i;
square.classList.add("square");
text = document.createElement("h1");
text.innerHTML = i;
text.id = "text" + i;
square.appendChild(text);
container.appendChild(square);
text.classList.add("hover");
}
上面的代码生成了 2690 个:
<div id="square1" class="square"><h1 id="text1">1</h1></div>
现在,我需要向每个 .square class 添加以下 html 内容:
<div class="hover"><a href="#">Click Me</a></div>
所以在结果中我需要:
<div id="square1" class="square"><h1 id="text1">1</h1>
<div class="hover"><a href="#">Click Me</a>
</div>
</div>
https://fiddle.jshell.net/tynw5c34/3/
我尝试了 .append、.addClass...但它不起作用。预先感谢您的帮助!
卢卡斯。为了使用 jQuery 实现您正在寻找的功能,我添加了一个外部资源:
https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js
并将其添加到 javascript:
$( ".square" ).append("<div class=\"hover\"><a href=\"#\">Click Me</a></div>")
希望对您有所帮助。
您可以像这样在纯 javascript 中附加 html
var squares = document.getElementsByClassName("square");
var str = '<div class="hover"><a href="#">Click Me</a> </div>';
Array.prototype.forEach.call(squares, function(sqr, index)
{
sqr.innerHTML = sqr.innerHTML + str;
});
工作 fiddle:https://fiddle.jshell.net/egxbhehu/
这是另一个解决方案:
for (i = 1; i <= 2690; i += 1) {
square = document.createElement("div");
square.id = "square" + i;
square.classList.add("square");
text = document.createElement("h1");
text.innerHTML = i;
text.id = "text" + i;
square.appendChild(text);
container.appendChild(square);
$('#square'+i).append('<div class="hover"><a href="#">Click Me</a></div>');
}
如果你想用 Javascript 生成方块,使用这个:
var i, square, text, container = document.getElementById("square_container");
var content = document.createElement('div');
content.className = 'hover';
var a=document.createElement('a');
a.href='#';
a.innerHTML='Click Me';
content.appendChild(a);
for (i = 1; i <= 2690; i += 1) {
square = document.createElement("div");
square.id = "square" + i;
square.classList.add("square");
text = document.createElement("h1");
text.innerHTML = i;
text.id = "text" + i;
square.appendChild(text);
container.appendChild(square);
document.getElementById('square'+i).appendChild(content.cloneNode(true));
}
您需要使用 cloneNode()
方法,它会克隆指定元素的所有属性和值。一个节点不能同时位于树中的两个位置。
这是一个可行的解决方案:jsfiddle
附加功能应该可以工作。
另外请注意,每个页面只能使用一次 <h1></h1>
标签。考虑使用 <span></span>
和 CSS 使其看起来像您当前的 h1 标签。
您应该使用 createDocumentFragment() 来附加多个子项。
var i, square, text, hoverDiv, aHref, container = document.getElementById("square_container");
for (i = 1; i <= 4; i += 1) {
square = document.createElement("div");
square.id = "square" + i;
square.classList.add("square");
text = document.createElement("h1");
text.innerHTML = i;
text.id = "text" + i;
hoverDiv = document.createElement("div");
hoverDiv.classList.add("hover");
aHref = document.createElement("a");
aHref.href = "#";
aHref.innerHTML = "Click Me";
hoverDiv.appendChild(aHref);
var docFrag = document.createDocumentFragment();
docFrag.appendChild(text);
docFrag.appendChild(hoverDiv);
square.appendChild(docFrag);
container.appendChild(square);
}
我有一个小问题需要你的帮助。感谢你,我有 2690 个由 js 生成的方块:
var i, square, text, container = document.getElementById("square_container");
for (i = 1; i <= 2690; i += 1) {
square = document.createElement("div");
square.id = "square" + i;
square.classList.add("square");
text = document.createElement("h1");
text.innerHTML = i;
text.id = "text" + i;
square.appendChild(text);
container.appendChild(square);
text.classList.add("hover");
}
上面的代码生成了 2690 个:
<div id="square1" class="square"><h1 id="text1">1</h1></div>
现在,我需要向每个 .square class 添加以下 html 内容:
<div class="hover"><a href="#">Click Me</a></div>
所以在结果中我需要:
<div id="square1" class="square"><h1 id="text1">1</h1>
<div class="hover"><a href="#">Click Me</a>
</div>
</div>
https://fiddle.jshell.net/tynw5c34/3/
我尝试了 .append、.addClass...但它不起作用。预先感谢您的帮助!
卢卡斯。为了使用 jQuery 实现您正在寻找的功能,我添加了一个外部资源:
https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js
并将其添加到 javascript:
$( ".square" ).append("<div class=\"hover\"><a href=\"#\">Click Me</a></div>")
希望对您有所帮助。
您可以像这样在纯 javascript 中附加 html
var squares = document.getElementsByClassName("square");
var str = '<div class="hover"><a href="#">Click Me</a> </div>';
Array.prototype.forEach.call(squares, function(sqr, index)
{
sqr.innerHTML = sqr.innerHTML + str;
});
工作 fiddle:https://fiddle.jshell.net/egxbhehu/
这是另一个解决方案:
for (i = 1; i <= 2690; i += 1) {
square = document.createElement("div");
square.id = "square" + i;
square.classList.add("square");
text = document.createElement("h1");
text.innerHTML = i;
text.id = "text" + i;
square.appendChild(text);
container.appendChild(square);
$('#square'+i).append('<div class="hover"><a href="#">Click Me</a></div>');
}
如果你想用 Javascript 生成方块,使用这个:
var i, square, text, container = document.getElementById("square_container");
var content = document.createElement('div');
content.className = 'hover';
var a=document.createElement('a');
a.href='#';
a.innerHTML='Click Me';
content.appendChild(a);
for (i = 1; i <= 2690; i += 1) {
square = document.createElement("div");
square.id = "square" + i;
square.classList.add("square");
text = document.createElement("h1");
text.innerHTML = i;
text.id = "text" + i;
square.appendChild(text);
container.appendChild(square);
document.getElementById('square'+i).appendChild(content.cloneNode(true));
}
您需要使用 cloneNode()
方法,它会克隆指定元素的所有属性和值。一个节点不能同时位于树中的两个位置。
这是一个可行的解决方案:jsfiddle
附加功能应该可以工作。
另外请注意,每个页面只能使用一次 <h1></h1>
标签。考虑使用 <span></span>
和 CSS 使其看起来像您当前的 h1 标签。
您应该使用 createDocumentFragment() 来附加多个子项。
var i, square, text, hoverDiv, aHref, container = document.getElementById("square_container");
for (i = 1; i <= 4; i += 1) {
square = document.createElement("div");
square.id = "square" + i;
square.classList.add("square");
text = document.createElement("h1");
text.innerHTML = i;
text.id = "text" + i;
hoverDiv = document.createElement("div");
hoverDiv.classList.add("hover");
aHref = document.createElement("a");
aHref.href = "#";
aHref.innerHTML = "Click Me";
hoverDiv.appendChild(aHref);
var docFrag = document.createDocumentFragment();
docFrag.appendChild(text);
docFrag.appendChild(hoverDiv);
square.appendChild(docFrag);
container.appendChild(square);
}