Javascript 比较选项值和返回父id时返回未定义的forEach
因此,我想获取所有Javascript 比较选项值和返回父id时返回未定义的forEach,javascript,short-circuiting,htmlcollection,Javascript,Short Circuiting,Htmlcollection,因此,我想获取所有元素,并获取“国家”下拉列表的ID 我有以下内容,它将推送到HTMLcollection中,然后比较第一个选项,通常是“阿富汗”。如果为true,则返回parentName.id的值 这是理论,但我一直没有定义。如有任何见解,将不胜感激 const selectsAvailable = document.getElementsByTagName("select"), countryList = Object.keys(selectsAvailable).
元素,并获取“国家”下拉列表的ID
我有以下内容,它将
推送到HTMLcollection中,然后比较第一个选项,通常是“阿富汗”。如果为true,则返回parentName.id的值
这是理论,但我一直没有定义。如有任何见解,将不胜感激
const selectsAvailable = document.getElementsByTagName("select"),
countryList = Object.keys(selectsAvailable).forEach((collectedSelect, i) => {
selectsAvailable[collectedSelect].options[0].value === 'Afghanistan' && selectsAvailable[collectedSelect].options[0].parentNode.id;
});
console.log("countryList>>>>>>", countryList);
语法似乎有点错误。如果满足条件,使用
.map()
将返回一些内容,但是.map()
在节点列表上不起作用,因此需要将其转换为数组
.filter()
非常适合这种情况,但它返回的是HTML元素而不是ID,因此我们将继续使用.map()
此外,您正在通过
元素进行循环,因此不需要遍历到父元素。最后,为了避免非匹配
元素的空数组项,这是.filter()
非常好的地方,我将ID推送到数组中,而不是在变量中声明函数:
const selectsAvailable=[…document.getElementsByTagName(“select”)];
让countryList=[];
选择savaailable.map(项目=>{
返回项。选项[0]。值=='Afghanistan'?countryList.push(项。id):“”
});
console.log(“countryList>>>>>”,countryList)代码>
阿富汗
非洲
某物
某物
语法似乎有点错误。如果满足条件,使用.map()
将返回一些内容,但是.map()
在节点列表上不起作用,因此需要将其转换为数组
.filter()
非常适合这种情况,但它返回的是HTML元素而不是ID,因此我们将继续使用.map()
此外,您正在通过
元素进行循环,因此不需要遍历到父元素。最后,为了避免非匹配
元素的空数组项,这是.filter()
非常好的地方,我将ID推送到数组中,而不是在变量中声明函数:
const selectsAvailable=[…document.getElementsByTagName(“select”)];
让countryList=[];
选择savaailable.map(项目=>{
返回项。选项[0]。值=='Afghanistan'?countryList.push(项。id):“”
});
console.log(“countryList>>>>>”,countryList)代码>
阿富汗
非洲
某物
某物
您可以使用foreach循环或映射来实现这一点
错误在于循环内没有返回
希望这有帮助
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<select id="1">
<option value="Afghanistan">Afghanistan</option>
<option value="Italy">Italy</option>
</select>
<select id="2">
<option value="Spain">Spain</option>
<option value="SriLanka">Sri Lanka</option>
</select>
</body>
</html>
<script>
document.addEventListener("DOMContentLoaded", function () {
var countryList = [];
const selectsAvailable = document.getElementsByTagName("select");
Object.keys(selectsAvailable).forEach((collectedSelect, i) => {
selectsAvailable[collectedSelect].options[0].value === 'Afghanistan' ?
countryList.push(selectsAvailable[collectedSelect].options[0].parentNode.id) : ''
});
console.log("countryList>>>>>>", countryList);
});
</script>
阿富汗
意大利
西班牙
斯里兰卡
document.addEventListener(“DOMContentLoaded”,函数(){
var countryList=[];
const selectsAvailable=document.getElementsByTagName(“选择”);
Object.key(selectsAvailable).forEach((collectedSelect,i)=>{
selectsAvailable[collectedSelect]。选项[0]。值==“阿富汗”?
countryList.push(selectsAvailable[collectedSelect]。选项[0]。parentNode.id:“”
});
console.log(“countryList>>>>>”,countryList);
});
您可以使用foreach循环或映射来实现这一点
错误在于循环内没有返回
希望这有帮助
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<select id="1">
<option value="Afghanistan">Afghanistan</option>
<option value="Italy">Italy</option>
</select>
<select id="2">
<option value="Spain">Spain</option>
<option value="SriLanka">Sri Lanka</option>
</select>
</body>
</html>
<script>
document.addEventListener("DOMContentLoaded", function () {
var countryList = [];
const selectsAvailable = document.getElementsByTagName("select");
Object.keys(selectsAvailable).forEach((collectedSelect, i) => {
selectsAvailable[collectedSelect].options[0].value === 'Afghanistan' ?
countryList.push(selectsAvailable[collectedSelect].options[0].parentNode.id) : ''
});
console.log("countryList>>>>>>", countryList);
});
</script>
阿富汗
意大利
西班牙
斯里兰卡
document.addEventListener(“DOMContentLoaded”,函数(){
var countryList=[];
const selectsAvailable=document.getElementsByTagName(“选择”);
Object.key(selectsAvailable).forEach((collectedSelect,i)=>{
selectsAvailable[collectedSelect]。选项[0]。值==“阿富汗”?
countryList.push(selectsAvailable[collectedSelect]。选项[0]。parentNode.id:“”
});
console.log(“countryList>>>>>”,countryList);
});
forEach
不返回任何内容查看filter
或map
forEach
不返回任何内容查看filter
或map
更清晰我刚刚意识到我甚至没有返回任何内容,因为我正在使用一个条件将某些内容推送到数组中.forEach()
在这种情况下确实有效。@我更清楚地意识到我甚至没有返回任何东西,因为我正在使用一个条件将某些东西推送到数组中<我认为code>.forEach()
在这种情况下确实有效。