在父 ID 中的 <img> 个元素之后添加 <span> 个元素
Add <span> elements after <img> elements within parent ID
我正在努力制作一个 JS 代码,该代码将在特定父项中的每个 <img>
标记后添加一个 <span>
元素。
这是 HTML 结构(简化版):
<ul id="payment_form_quickpaypayment_payment">
<li>
<table>
<tbody>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="dankort" checked="checked">
</td>
<td>
<img src="/dankort.png" title="Dankort">
</td>
</tr>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="mastercard">
</td>
<td>
<img src="/mastercard.png" title="MasterCard">
</td>
</tr>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="mastercard-debet">
</td>
<td>
<img src="/mastercarddebet.png" title="MasterCard Debet DK">
</td>
</tr>
</tbody>
</table>
</li>
</ul>
我想在每个 <img>
元素后添加一个 <span>
元素, <span>
元素中的内容应该是每个 title
属性中的文本 <img>
因此部分:
<td>
<img src="/dankort.png" title="Dankort">
</td>
在 运行 脚本之后应该是这样的:
<td>
<img src="/dankort.png" title="Dankort">
<span>Dankort</span>
</td>
这是我试过的方法,但没有用:
<script>
function payLoad() {
var selectedImage = document.getElementById("payment_form_quickpaypayment_payment").getElementsByTagName('img');
var i;
for (i = 0; i < selectedImage.length; i++) {
var newSpan = document.createElement("span");
var currentImgTitle = selectedImage[i].title();
var t = document.createTextNode(currentImgTitle);
newSpan.appendChild(t);
selectedImage[i].appendChild(newSpan);
}
}
window.onload = payLoad;
</script>
selectedImage[i].appendChild(newSpan);
会将span
添加到img
作为它的child,如果你想让他们成为兄弟姐妹,你需要selectedImage[i].parentNode.appendChild(newSpan);
。
提示:您可以使用浏览器检查器查看 html 层次结构。
你不能做 .title()
它不是函数而是 img
的 属性。
<ul id="payment_form_quickpaypayment_payment">
<li>
<table>
<tbody>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="dankort" checked="checked">
</td>
<td>
<img src="/dankort.png" title="Dankort">
</td>
</tr>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="mastercard">
</td>
<td>
<img src="/mastercard.png" title="MasterCard">
</td>
</tr>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="mastercard-debet">
</td>
<td>
<img src="/mastercarddebet.png" title="MasterCard Debet DK">
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<script>
function payLoad() {
var selectedImage = document.getElementById("payment_form_quickpaypayment_payment").getElementsByTagName('img');
var i;
for (i = 0; i < selectedImage.length; i++) {
var newSpan = document.createElement("span");
newSpan.innerText = selectedImage[i].title
selectedImage[i].parentNode.appendChild(newSpan);
}
}
window.onload = payLoad;
</script>
你获取title attr的方式有误。需要做
var currentImgTitle = selectedImage[i].title;
我是这样实现的
$(document).ready(function(){
payLoad();
});
function payLoad() {
var selectedImage = document.getElementById("payment_form_quickpaypayment_payment").getElementsByTagName('img');
var i;
for (i = 0; i < selectedImage.length; i++) {
var newSpan = document.createElement("span");
var currentImgTitle = selectedImage[i].title;
var t = document.createTextNode(currentImgTitle);
newSpan.appendChild(t);
selectedImage[i].appendChild(newSpan);
}
}
我正在努力制作一个 JS 代码,该代码将在特定父项中的每个 <img>
标记后添加一个 <span>
元素。
这是 HTML 结构(简化版):
<ul id="payment_form_quickpaypayment_payment">
<li>
<table>
<tbody>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="dankort" checked="checked">
</td>
<td>
<img src="/dankort.png" title="Dankort">
</td>
</tr>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="mastercard">
</td>
<td>
<img src="/mastercard.png" title="MasterCard">
</td>
</tr>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="mastercard-debet">
</td>
<td>
<img src="/mastercarddebet.png" title="MasterCard Debet DK">
</td>
</tr>
</tbody>
</table>
</li>
</ul>
我想在每个 <img>
元素后添加一个 <span>
元素, <span>
元素中的内容应该是每个 title
属性中的文本 <img>
因此部分:
<td>
<img src="/dankort.png" title="Dankort">
</td>
在 运行 脚本之后应该是这样的:
<td>
<img src="/dankort.png" title="Dankort">
<span>Dankort</span>
</td>
这是我试过的方法,但没有用:
<script>
function payLoad() {
var selectedImage = document.getElementById("payment_form_quickpaypayment_payment").getElementsByTagName('img');
var i;
for (i = 0; i < selectedImage.length; i++) {
var newSpan = document.createElement("span");
var currentImgTitle = selectedImage[i].title();
var t = document.createTextNode(currentImgTitle);
newSpan.appendChild(t);
selectedImage[i].appendChild(newSpan);
}
}
window.onload = payLoad;
</script>
selectedImage[i].appendChild(newSpan);
会将span
添加到img
作为它的child,如果你想让他们成为兄弟姐妹,你需要selectedImage[i].parentNode.appendChild(newSpan);
。
提示:您可以使用浏览器检查器查看 html 层次结构。
你不能做 .title()
它不是函数而是 img
的 属性。
<ul id="payment_form_quickpaypayment_payment">
<li>
<table>
<tbody>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="dankort" checked="checked">
</td>
<td>
<img src="/dankort.png" title="Dankort">
</td>
</tr>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="mastercard">
</td>
<td>
<img src="/mastercard.png" title="MasterCard">
</td>
</tr>
<tr>
<td>
<input type="radio" class="radio" name="qpayment_type" value="mastercard-debet">
</td>
<td>
<img src="/mastercarddebet.png" title="MasterCard Debet DK">
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<script>
function payLoad() {
var selectedImage = document.getElementById("payment_form_quickpaypayment_payment").getElementsByTagName('img');
var i;
for (i = 0; i < selectedImage.length; i++) {
var newSpan = document.createElement("span");
newSpan.innerText = selectedImage[i].title
selectedImage[i].parentNode.appendChild(newSpan);
}
}
window.onload = payLoad;
</script>
你获取title attr的方式有误。需要做
var currentImgTitle = selectedImage[i].title;
我是这样实现的
$(document).ready(function(){
payLoad();
});
function payLoad() {
var selectedImage = document.getElementById("payment_form_quickpaypayment_payment").getElementsByTagName('img');
var i;
for (i = 0; i < selectedImage.length; i++) {
var newSpan = document.createElement("span");
var currentImgTitle = selectedImage[i].title;
var t = document.createTextNode(currentImgTitle);
newSpan.appendChild(t);
selectedImage[i].appendChild(newSpan);
}
}