我有一个ID为'adpictureholder'的div,我动态添加(或删除)图像
在表单提交上,我想获得该DIV中所有这些图像的SRC值,并将它们设置为ID为'piclinkslisttosubmit'的一个隐藏输入的值。
问题是我当前的Javascript不起作用,好像有一些语法错误,但我没有看到。
任何人都可以快速浏览一下吗?
function copyonsubmit(){
var strump1 = '';
var i=0;
var endi = document.getElementById('adpictureholder').childNodes[].length - 1;
var images = document.getElementById('adpictureholder').childNodes[];
for (i=0;i<=endi;i++)
{
strump1 = strump1 + '|' + images[i].src;
}
document.getElementById('piclinkslisttosubmit').value = strump1;
}
答案 0 :(得分:5)
将childNodes[]
更改为childNodes
。
您不需要通过添加括号来指定您引用的变量是数组。
答案 1 :(得分:1)
首先,您不需要在childNodes之后使用[]
。这会导致错误。
您还忘记了childNodes包含文本节点并且无法正常工作,因为它们并不都包含src属性。我已在以下示例中更正过:
function copyonsubmit() {
var str = '';
var textbox = document.getElementById('piclinkslisttosubmit');
var i = 0;
var images = document.getElementById('adpictureholder').childNodes;
var numImages = images.length - 1;
var src = "";
for (i = 0; i < numImages; i++) {
if (images[i].tagName === "IMG") {
str += images[i].src + '|';
}
}
str = str.slice(0, -1); // cut off the final |
textbox.value = str;
}
其次你可以用jQuery简单地写这个。
var str = "";
$("#apictureholder").children("img").each(function() {
str += $(this).attr("src") + "|";
})
$("#piclinkslisttosubmit").val(str);
第三关请务必检查控制台是否有错误。我在JSFiddle上运行此代码时非常清楚它有问题。
最后,你究竟想做什么?
答案 2 :(得分:1)
阅读属性值时不应使用[]
:
var images = document.getElementById('adpictureholder').childNodes;
然后您可以从数组中获取长度,而不是再次读取属性:
var endi = images.length - 1;
答案 3 :(得分:1)
您的javascript无效,因为您只需childNodes[]
childNodes[]
就可以解决这个问题。{1}}
childNodes
答案 4 :(得分:0)
将childNodes[]
更改为childNodes
,其余对我来说很好,
尝试,
function copyonsubmit(){
var strump1 = '';
var i=0;
var endi = document.getElementById('adpictureholder').childNodes.length - 1;
var images = document.getElementById('adpictureholder').childNodes;
for (i=0;i<=endi;i++)
{
strump1 = strump1 + '|' + images[i].src;
}
document.getElementById('piclinkslisttosubmit').value = strump1;
}
答案 5 :(得分:0)
你说你使用的是jQuery,但是你向我们展示了vanilla Javascript。我冒昧地将你的代码转换为jQuery并稍微清理它。其他人已经确定了你的问题。
function copyonsubmit() {
var strump1 = '';
var images = $("#adpictureholder")[0].childNodes;
for (var i = 0; i < images.length; i++) {
strump1 += '|' + images[i].src;
}
$('#piclinkslisttosubmit').val(strump1);
}