为什么我的Javascript无效?

时间:2012-03-21 14:47:16

标签: javascript jquery

我有一个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;
}   

6 个答案:

答案 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;
}

http://jsfiddle.net/NWArL/2/

其次你可以用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,其余对我来说很好,

Read about 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);
}​