正确的javascript语法,用于在具有变量和迭代的表单上使用document.getElementById

时间:2018-10-01 18:48:07

标签: javascript forms syntax getelementbyid

我正在尝试使用javascript将通过表单数据构建的div的内容发送到隐藏的表单域,但是我无法正确获取语法。

所有.js文件中的表单字段如下所示

$('#ticketDetails').append ('<div id="seat-build-row-' + i + '" class="seller-listing row"> \
                   <input type="hidden" id="seatNumber-[' + i + ']" class="form-control seatNumber" name="ticket[' + i + '][seat_number]" value=""> \
               </div>');

和我要引用的div在这里

$('#ticket-rows').append('<div id="ticket-row-' + i + '" class="seller-listing row"> \
                  <div class="col-4 col-md-6" id="seatDetailsBuild-' + i + '">Section: <span class="seatSectionData"></span>, Row: <span class="seatRowData"></span>, Seat Number: <span class="seatNumData"></span></div> \
               </div>');

当在其他地方输入表单数据时,三个跨度将使用模糊填充。

$('.seatNum').off('blur').on('blur', function() {
                   var row = $('#ticket-row-' + $(this).parent().parent().data('row'));
                   row.find('.seatNumData').html($(this).val());

                   }
               });

到目前为止,一切都很好(一切正常),除了我可以为document.getelementbyId确定正确的语法,因为每行中都有['+ i +']。 我有这个,但是不行

document.getElementById(seatNumber-[' + i + ']).value = document.getElementById("seatDetailsBuild-' + i + '").innerHTML;

使用一个更简单的seatNumber和seatDetailsBuild固定ID,它可以正常工作(但只能运行一次)。

非常感谢您提供有关正确语法的帮助。

1 个答案:

答案 0 :(得分:0)

您的引号放错了位置。它们必须位于ID的列表部分附近,而不是串联在一起的变量。

document.getElementById('seatNumber-[' + i + ']')

顺便说一句,我不建议在ID中使用[],因为由于方括号用于属性选择器,因此使用选择器语法很难引用元素。