0

在 javascript 代码中,当我调用该函数时,此警报将打印 JSON,但它缺少一些值。总共有 3 个字段(2 个一组),有时它们会像这样打印:

{"":"01bce391-d3a2-4582-8e53-6a45bb583284","cast":"07392eb1-c356-4760-8f4c-  
62ff164ca721"}

或者

{"":"01bce391-d3a2-4582-8e53-6a45bb583284","asd":"01bce391-
d3a2-4582-8e53-6a45345242","cast":"07392eb1-c356-4760-8f4c-62ff164ca721"}

柜台:

var counteradd=4;
$("#getButton").click(function () {
    var jsonadd = {};
    for(i=1; i<counteradd;i++) {
        jsonadd[$('#textboxadd' + i).val()] = $('#searchaddid' + i).val();
        alert('#searchaddid' + i);
        alert($('#searchaddid' + i).val());
    }

    alert(JSON.stringify(jsonadd));
});
4

1 回答 1

0

我不确定您到底想在这里做什么,但是我需要修复一些错误才能使其正常工作:

  • 在代码末尾添加一个额外的括号和括号。
  • 更改newTextBoxDivcast.after().html(newTextBoxDivcast.append(。该$.after()函数将创建一个新元素作为该对象的兄弟元素,然后忘记它。然后$.html()将用您插入的内容替换当前对象的 HTML。
  • 更改定义 jsoncastadd 对象的行,使其值来自$('#secastadd' + i)。在您的代码中,$('#searchcastaddid' + i)始终为空且从未触及。
  • 将 jQuery 作为外部资源添加到您提供的小提琴中。

您可能遇到问题的一个原因是,如果多次使用同一个密钥。例如,jsoncastadd["blah"] = 5最后jsoncastadd["blah"] = 6会留下你{"blah":"6"}

这是我想出的结果代码:

$(document).ready(function(){
    var countercastadd=1;
    $(document).on('click', '.removebtnaddcast', function() {
        var finalremadd = $(this).attr("id").match(/\d+/);
        alert(finalremadd);
        $('#searchcastaddid'+ finalremadd).attr('value','');
        $('#textboxcastadd'+ finalremadd).val("");
        $('#secastadd'+ finalremadd).val("");
    });
    $("#addc").click(function () {
        var newTextBoxDivcast = $(document.createElement('div'))
        .attr("id", 'TextBoxDivcast' + countercastadd);
        newTextBoxDivcast.append(' <input type="text" placeholder="Search" name="searchcastadd' + countercastadd +
            '" id="secastadd' + countercastadd + '" value=""> <input type="text" placeholder="Cast" name="Castadd' + countercastadd +
            '" id="textboxcastadd' + countercastadd + '" value="" > <input type="button" id="removebtnaddcast' + countercastadd +
            '" class="removebtnaddcast" value="-" > <input type="hidden"  name="searchcastaddid' + countercastadd +
            '" id="searchcastaddid' + countercastadd + '" value="" >');
        newTextBoxDivcast.appendTo("#TextBoxesGroup1");
        countercastadd++;
        //alert(countercastadd);
    });
    $("#getButton").click(function () {
        var jsoncastadd = {};
        for(i=1; i<countercastadd;i++)
            jsoncastadd[$('#textboxcastadd' + i).val()] = $('#secastadd' + i).val();
        alert(JSON.stringify(jsoncastadd));
    });
});
于 2013-05-23T17:00:54.297 回答