无法从 Javascript 中使用 FOR 循环创建的选定选项元素 console.log() textContent 来填充 Select 元素中的列表
Cannot console.log() textContent from a selected Option Element that was created using a FOR loop in Javascript to populate a list in a Select Element
我有一个函数可以将选项元素列表填充到 select 元素中。
function createOptionElements(){
const select = document.querySelector('select');
for(let i=1;i<11;i++){
const option = document.createElement('option');
option.textContent = i;
select.appendChild(option);
}
}
当我 select 来自 select 的选项值 3 时,我希望 console.log(option.textContent) 输出 true。
function outputOptionTextContent(){
const option = document.querySelector('option');
if (option.textContent === "3"){
console.log(true);
}
else {
console.log(false);
}
}
当我简单地调用 console.log(option.textContent) 时,我只会得到列表中的第一个值,即 1,即使我 select 是一个不同的值。
我尝试这样做的原因是,我正在对 JSON 数据调用 HTTP GET 请求,数据具有名称属性,名称属性将添加到 select 作为选项,&我想在单击特定名称时调用一个函数,所以我正在考虑添加一个函数来查找 textContent 的值,然后将 textContent 值与 JSON 数据中的名称进行比较, 如果它们匹配,则调用该函数。
document.querySelector
只有 select 找到第一个元素。相反,执行 document.querySelectorAll('option')
它将 return 一个 NodeList。这样你就可以遍历它并做你想做的事
编辑:上面忽略
向您的 select 元素添加事件侦听器以进行输入。
select.addEventListener('input', e => {
let value = select.options[select.selectedIndex].value;
console.log(value);
})
背后的原因可能是 textContent 不是标准属性,如果使用内置方法,标准属性是值也更好
option.setAttribute(“value”, variableWithValue);
是的,如果有 setAttribute 还有一个 getAttribute
,你猜对了
option.getAttribute(“value”);
所以最终结果应该是这样的
window.addEventListener('DOMContentLoaded', (event) => {
console.log('DOM fully loaded and parsed');
const select = document.querySelector('select');
for(let i=1;i<11;i++){
const option = document.createElement('option');
option.setAttribute(“value”,i);
select.appendChild(option);
}
/// add the select to the document
document.body.appendChild(select);
select.addEventListener("change", (e) => {
const optionSelected = e.target.value;
})
});
我有一个函数可以将选项元素列表填充到 select 元素中。
function createOptionElements(){
const select = document.querySelector('select');
for(let i=1;i<11;i++){
const option = document.createElement('option');
option.textContent = i;
select.appendChild(option);
}
}
当我 select 来自 select 的选项值 3 时,我希望 console.log(option.textContent) 输出 true。
function outputOptionTextContent(){
const option = document.querySelector('option');
if (option.textContent === "3"){
console.log(true);
}
else {
console.log(false);
}
}
当我简单地调用 console.log(option.textContent) 时,我只会得到列表中的第一个值,即 1,即使我 select 是一个不同的值。
我尝试这样做的原因是,我正在对 JSON 数据调用 HTTP GET 请求,数据具有名称属性,名称属性将添加到 select 作为选项,&我想在单击特定名称时调用一个函数,所以我正在考虑添加一个函数来查找 textContent 的值,然后将 textContent 值与 JSON 数据中的名称进行比较, 如果它们匹配,则调用该函数。
document.querySelector
只有 select 找到第一个元素。相反,执行 document.querySelectorAll('option')
它将 return 一个 NodeList。这样你就可以遍历它并做你想做的事
编辑:上面忽略
向您的 select 元素添加事件侦听器以进行输入。
select.addEventListener('input', e => {
let value = select.options[select.selectedIndex].value;
console.log(value);
})
背后的原因可能是 textContent 不是标准属性,如果使用内置方法,标准属性是值也更好
option.setAttribute(“value”, variableWithValue);
是的,如果有 setAttribute 还有一个 getAttribute
option.getAttribute(“value”);
所以最终结果应该是这样的
window.addEventListener('DOMContentLoaded', (event) => {
console.log('DOM fully loaded and parsed');
const select = document.querySelector('select');
for(let i=1;i<11;i++){
const option = document.createElement('option');
option.setAttribute(“value”,i);
select.appendChild(option);
}
/// add the select to the document
document.body.appendChild(select);
select.addEventListener("change", (e) => {
const optionSelected = e.target.value;
})
});