3 回答

TA貢獻1802條經驗 獲得超4個贊
我假設你想得到這個輸出
data: {
title: $("#title").val(),
dateacquired: $("#dateacquired").val(),
genre: $("#genre").val(),
num_discs: $("#num_discs").val(),
esrb_rating: $("#esrb_rating").val(),
publisher: $("#publisher").val(),
platform: $("#platform").val(),
seriesname: $("#seriesname").val()
}
從數據列。假設您有數據列并分配了它
let datacolumns=$(#myid).attr('data-columns')
檢查以下代碼片段
let datacolumns="title,dateacquired,genre,num_discs,esrb_rating, publisher,platform,seriesname,delete";
let data={};
let arr=[];
datacolumns.split(",").forEach((element)=>{
//using trim in case there is space
arr.push({
data:element.trim()
})
data[element]=`$(#).val()`;//for displaying purpose
//uncomment below line to work
//data[element]=$(`#${element.trim(0}`).val()`
})
console.log(data);
console.log(arr);
.as-console-wrapper { max-height: 100% !important; top: 0; }

TA貢獻1810條經驗 獲得超4個贊
假設您在數據屬性中有以下值。首先,您必須通過 id 獲取它,然后添加一個 split 方法以用逗號拆分字符串。然后您可以使用它們來創建對象格式。
<p id="myid" data-columns = "title,dateaquired,genre,num_discs, etc etc - it can be any number of fields"></p>
let commaSplited = $(#myid).attr('data-columns').split(',');
現在您可以通過這種方式創建所需結構的對象。索引將取決于逗號分隔值的位置。
let obj = [
data: {
title: commaSplited [0],
dateacquired: commaSplited[1] ,
genre: commaSplited[2],
num_discs: commaSplited[3],
esrb_rating: commaSplited[4],
publisher: commaSplited[5],
platform: commaSplited[6],
seriesname: commaSplited[7]
}
];

TA貢獻1839條經驗 獲得超15個贊
使用 Data-* 屬性
在屬性字符串上拆分
遍歷屬性并查找 HTML 元素的值
為對象賦值
在這種情況下,步驟 2 和 3 通過以下reduce
函數處理:
let data = target.dataset.columns.split(',').reduce((obj, key)=>{
let el = document.querySelector('#'+key)
obj.data[key] = el && el.value || ''
return obj;
}, { data: {} });
console.log(data)
<div id="target" data-columns="title,dateacquired,genre,num_discs"></div>
<input type="hidden" id="title" value="Top Gun" />
<input type="hidden" id="dateacquired" value="1989" />
<input type="hidden" id="genre" value="Homoerotic Dramatic Comedy" />
<input type="hidden" id="num_discs" value="1" />
或者
let arr = target.dataset.columns.split(',').map(key=>({ data: key }));
console.log(arr)
<div id="target" data-columns="title,dateacquired,genre,num_discs"></div>
添加回答
舉報