2 回答
![?](http://img1.sycdn.imooc.com/533e51f30001edf702000200-100-100.jpg)
TA贡献1811条经验 获得超4个赞
解决方法:在使用Object.defineProperty()时,需要为方法的第三个参数设置enumerable:true。见下文。感谢大家的帮助!
form1.addEventListener("submit", (e) => {
e.preventDefault();
let forValidationCheck = {};
let allNames = ["Tarp 1", "Tarp 2", "Tarp 3"];
for(let r = 0; r < allNames.length; r++) {
let currentChosen = allNames[r].toLowerCase();
let optionsForCheck = document.getElementById(`selection${r+1}`);
let selectedArrayForCheck = [];
for(z=0; z < optionsForCheck.options.length; z++) {
if(optionsForCheck.options[z].selected === true) {
selectedArrayForCheck.push(optionsForCheck.options[z].value.toLowerCase());
}
}
Object.defineProperty(forValidationCheck, currentChosen, {
value: selectedArrayForCheck,
enumerable: true
})
}
for(let layerOuterLoop in forValidationCheck) {
//Code within for..in loop
}
});
<html>
<head>
</head>
<body>
<form id="form1">
<select name="selection1" id="selection1">
<option value="Tarp 1">Tarp 1</option>
<option value="Tarp 2">Tarp 2</option>
</select>
<select name="selection2" id="selection2">
<option value="Tarp 2">Tarp 2</option>
<option value="Tarp 3">Tarp 3</option>
</select>
<select name="selection3" id="selection3">
<option value="Tarp 1">Tarp 1</option>
<option value="Tarp 3">Tarp 3</option>
</select>
</form>
</body>
</html>
![?](http://img1.sycdn.imooc.com/545845e900013e3e02200220-100-100.jpg)
TA贡献1936条经验 获得超6个赞
做同样的事情更简单:
const myForm = document.getElementById('form1')
, allNames ={ 'Tarp 1': myForm.selection1
, 'Tarp 2': myForm.selection2
, 'Tarp 3': myForm.selection3
}
myForm.onsubmit=e=>
{
e.preventDefault()
let forValidationCheck = {}
for (let aN in allNames)
{
forValidationCheck[aN.toLowerCase()] = allNames[aN].value
//forValidationCheck[aN.toLowerCase()] = [allNames[aN].value] //if prefered
}
for (let layerOuterLoop in forValidationCheck)
{
console.log(layerOuterLoop, ' => ',forValidationCheck[layerOuterLoop] )
}
}
/* -- in case of selects are multiple : -...
for (let aN in allNames)
{
forValidationCheck[aN.toLowerCase()] = [...allNames[aN].options]
.filter(option=>option.selected)
.map(option=>option.value)
}
*/
<form id="form1">
<select name="selection1">
<option value="Tarp 1">Tarp 1</option>
<option value="Tarp 2">Tarp 2</option>
</select>
<select name="selection2">
<option value="Tarp 2">Tarp 2</option>
<option value="Tarp 3">Tarp 3</option>
</select>
<select name="selection3">
<option value="Tarp 1">Tarp 1</option>
<option value="Tarp 3">Tarp 3</option>
</select>
<button type="submit">submit</button>
</form>
添加回答
举报