我有這個HTML表中創建鍵=>值數組:如何在收集對象的Javascript
<table class="table table-condensed">
<thead>
<tr>
<th><input type="checkbox" id="toggleCheckboxSelFabricante" name="toggleCheckboxSelFabricante"></th>
<th>Fabricante</th>
</tr>
</thead>
<tbody id="selFabricanteBody">
<tr>
<td><input type="checkbox" name="selChkFabricante" id="selChkFabricante3" value="3"></td>
<td>Eos est ipsam.</td>
</tr>
</tbody>
</table>
我需要創建一個key => value
爲manufacturerColl
變種,其中id
是每個選中的複選框(值第一個在桌子上)和name
是第二列的文字,但不知道如何。這是我在我的代碼已經:
var checkedModelBranch = $("#parMarcaModeloFabricanteBody").find("input[type='checkbox']:checked"),
checkedManufacturers = $("#selFabricanteBody").find("input[type='checkbox']:checked"),
manufacturerColl = [],
modelBranchManufacturerCollection;
for (var j = 0; j < checkedManufacturers.length; j++) {
manufacturerColl.push(checkedManufacturers[j].value);
}
for (var i = 0; i < checkedModelBranch.length; i++) {
modelBranchManufacturerCollection = addNewRelationModelBranchManufacturer(checkedModelBranch[i].value, manufacturerColl);
if (modelBranchManufacturerCollection) {
for (var k = 0; k < modelBranchManufacturerCollection.manufacturerKeyCollection.length; k++) {
$("#parMarcaModeloFabricanteBody td#" + checkedModelBranch[i].value).html(modelBranchManufacturerCollection.manufacturerKeyCollection[k] + '<br/>');
}
}
}
我需要在別人的話是每個manufacturerColl
已經和id
=>name
,例如:
manufacturerColl[] = {
id: someId,
name: someName
};
而且我不知道,但也許這可以工作:
// move foreach selected checkbox and get the needed
for (var j = 0; j < checkedManufacturers.length; j++) {
manufacturerColl.push({
id: checkedManufacturers[j].value,
name: "" // how do I get the value on the second column?
});
}
這是正確的方法來做到這一點?如何在每次迭代中獲得第二列的值?
方法
我不知道這是否是完全性右,但我做了什麼,它是越野車。請參閱代碼:
var checkedModelBranch = $("#parMarcaModeloFabricanteBody").find("input[type='checkbox']:checked"),
checkedManufacturers = $("#selFabricanteBody").find("input[type='checkbox']:checked"),
// I added this var to get all the names
checkedManufacturersName = $("#selFabricanteBody").find("input[type='checkbox']:checked").parent().next('td').text(),
manufacturerColl = [],
modelBranchManufacturerCollection;
for (var j = 0; j < checkedManufacturers.length; j++) {
manufacturerColl.push({
id: checkedManufacturers[j].value,
// Here I'm tying to put the entire name but get only the first character
name: checkedManufacturersName[j]
});
}
for (var i = 0; i < checkedModelBranch.length; i++) {
modelBranchManufacturerCollection = addNewRelationModelBranchManufacturer(checkedModelBranch[i].value, manufacturerColl);
if (modelBranchManufacturerCollection) {
//$("#parMarcaModeloFabricanteBody td#" + checkedModelBranch[i].value).siblings().attr("rowspan", modelBranchManufacturerCollection.manufacturerKeyCollection.length);
for (var k = 0; k < modelBranchManufacturerCollection.manufacturerKeyCollection.length; k++) {
// then I render the name attribute from the collection
$("#parMarcaModeloFabricanteBody td#" + checkedModelBranch[i].value).append((modelBranchManufacturerCollection.manufacturerKeyCollection)[k].name + '<br/>');
}
}
}
爲什麼我只插入/獲取第一個字符而不是完整的字符串?
@apsillers我在主文章中添加了一些額外的信息,請看一下,看看是否清除了一些問題以及我需要的內容 – ReynierPM 2014-10-30 20:46:47
如果您的意思是HTML中複選框旁邊的文本,它的正文。沒有辦法輕鬆搞定。你可以將它封裝在一個帶有id的跨度中,或者像'['text1','text2']'那樣硬編碼地圖,其中數組索引是複選框值(稀疏數組是javascript處理的少數幾個東西之一),以及當你迭代選中的複選框時,只需從該數組中取出'name'值即可。 – 2014-10-30 20:50:20
@JaredSmith,按照你的建議做,我該怎麼做? – ReynierPM 2014-10-30 20:51:54