如果我有字符串变量mydata="a1,a2,a3, ,a5,b1,b2,b3,b4,b5"
并且我需要在下面的元素中分配?: -
Parent Index: 0 (div classname="parts")
.serialno="a1"
.modelno="a2"
.section="a3"
.subsection=" " -empty value
.incharge="a5"
Parent Index: 1 (div classname="parts")
.serialno="b1"
.modelno="b2"
.section="b3"
.subsection="b4 "
.incharge="b5"
我已经知道的是如何将字符串数组直接分配给元素,如下所示: -
var mydata = $("#txtproduction").val();
var gdata = mydata.split(',').length / 5; //get how many group
if (gdata = 1) {
$.each(mydata.split(','), function (index, value) {
if (index == 0) { $('.serialno').val(value); }
if (index == 1) { $('.modelno').val(value); }
if (index == 2) { $('.section').val(value); }
if (index == 3) { $('.subsection').val(value); }
if (index == 4) { $('.incharge').val(value); }
});
}
但是当元素在父母内部有子时我不知道如何处理它......
if (gdata >1){
//if more than 1 group data - how to handle loop assign value to element accondingly??
}
请帮助我,我已经想好了很多天,但仍然无法弄清楚如何解决这个问题。 感谢您提前阅读和回复我的问题。
答案 0 :(得分:1)
对于元素结构如下:
<div class="parts">
<input type="text" class="serialno">
<input type="text" class="modelno">
<input type="text" class="section">
<input type="text" class="subsection">
<input type="text" class="incharge">
</div>
<div class="parts">
<input type="text" class="serialno">
<input type="text" class="modelno">
<input type="text" class="section">
<input type="text" class="subsection">
<input type="text" class="incharge">
</div>
下面的代码应该有效:
var mydata = $("#txtproduction").val();
var arr = mydata.split(',');
$('.serialno').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5]);});
$('.modelno').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5+1]);});
$('.section').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5+2]);});
$('.subsection').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5+3]);});
$('.incharge').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5+4]);});
如果结构不同,请纠正我的理解。 查看here
答案 1 :(得分:1)
您是否可以更改mydata
的结构?您在记录内和记录之间有相同的分隔符。你最好用分号加入记录,例如a1,a2,a3,a4,a5;b1,b2,b3,b4,b5;…
如果没有,你需要“大块”你的阵列。
var myData = $("#txtproduction").val().split(','),
columnsPerRecord = 5,
record;
while (myData.length) {
// iterate/create div here
record = myData.splice(0, columnsPerRecord);
$(currentDiv).find('.serialno').val(record[0]);
…
}