我有一個下拉選單,有一個按鈕可以選擇所有值。陣列中已經有一些默認值,點擊一個按鈕,所有其余的值都應該被推送(選擇)。
我已經嘗試過來自 SO 的其他解決方案,但我似乎無法讓它發揮作用。
我需要推送到另一個陣列的值:
valuesToPush: {
value1: 'Value 1',
value2: 'value 2',
value3: 'Value 3',
value4: 'Value 4',
value5: 'Value 5',
},
我推送的陣列最初是空的,所以:
pushedValues: [];
在頁面裝載時,我將一些默認值推送到陣列:
pushedValues.push('value1','value2');
當我單擊按鈕時,如何通過鍵添加其余的值(我需要請求的鍵,而該值用于顯示在頁面上)?我可以用同樣的方式來做,但可能會添加更多的鍵值對,所以我需要它是動態的。
uj5u.com熱心網友回復:
試試這個
const pushedValues = [];
function myFunction() {
var x = document.getElementById("val").value;
console.log("You selected: " x);
if(!pushedValues.includes(x)){
pushedValues.push(x);
console.log(pushedValues);
}
}
<label for="cars">Choose a value:</label>
<select name="val" id="val" onchange="myFunction()">
<option value="value1">value 1</option>
<option value="value2">value 2</option>
<option value="value3">value 3</option>
<option value="value4">value 4</option>
<option value="value5">value 5</option>
</select>
uj5u.com熱心網友回復:
不確定是否可以,但您可以將您的值轉換為物件陣列并嘗試類似下面的代碼(需要添加更多作業以處理“取消選擇”專案,但我認為這可能會讓您更接近您正在嘗試的內容實作。(我認為)
// update values to array of objects
const valuesToPush = [{
value1: 'Value 1'
},
{
value2: 'value 2'
},
{
value3: 'Value 3'
},
{
value4: 'Value 4'
},
{
value5: 'Value 5'
},
];
const pushedValues = [];
// push some defaults (keys only)
pushedValues.push('value1', 'value4');
console.log(pushedValues);
function init() {
var selectObj = document.getElementById("select");
valuesToPush.forEach(obj => {
for (const [key, value] of Object.entries(obj)) {
var newOption = new Option(value, key);
// mark default as selected
if (pushedValues.includes(key)) {
newOption.selected = true;
}
// add them as options for the select
selectObj.add(newOption);
}
});
}
function myFunction() {
var x = document.getElementById("select").value;
console.log("You selected: " x);
console.log(pushedValues);
if (!pushedValues.includes(x)) {
pushedValues.push(x);
console.log(pushedValues);
}
}
init();
<label for="cars">Choose a value:</label>
<br/>
<select name="val" id="select" multiple onchange="myFunction()"></select>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/378729.html
標籤:javascript 数组 哎呀
上一篇:Java繼承、instanceof、轉換-如何通過父物件接受子物件?
下一篇:不同型別繼承中的C new關鍵字
