我用 javascript 创建的单选按钮没有显示
My radio buttons, created with javascript, are not showing up
我正在使用 firebase cloud firestore 在选举中保存多个候选人的名字。我正在尝试使用 JavaScript 创建一个表单,在单选按钮中显示每个候选人的姓名。我已将脚本连接到我的表单,但单选按钮不显示。它显示名称,但不显示按钮。该表单位于弹出模式中。控制台中没有错误。
这是我的代码:
const splCanList = document.querySelector('#SPLInput');
const setupSPLCans = (data) => {
let html = '';
if (data.length) {
data.forEach(doc => {
const SPLCan = doc.data();
const li = `
<input type="radio" name="SplElection" id="${SPLCan.name}" value="${SPLCan.name}" style="display:block;">${SPLCan.name}
<br>
`;
html += li
});
splCanList.innerHTML = html;
} else {
splCanList.innerHTML = html;
};
};
这里有很多遗漏的部分,但据我所知,这应该可行。
你没有在任何地方执行 setupSPLCans
函数,我不得不填补 data
形状的空白。
但是我所做的更改可能是您代码中的错误:
- 我将
html
声明向上移动了一个块,以便您的 else 子句可以访问它
- 您使用的material CSS自带的收音机会自动隐藏。我添加了一些 CSS 来对抗
const splCanList = document.querySelector('#SPLInput');
const setupSPLCans = (data) => {
let html = ''; // <-- moved this up a line
if (data.length) {
data.forEach(doc => {
const SPLCan = doc.data();
const li = `
<input type="radio" name="${SPLCan.name}" id="${SPLCan.name}" value="${SPLCan.name}" style="display:block;">${SPLCan.name}
<br>
`;
html += li
});
splCanList.innerHTML = html;
} else {
splCanList.innerHTML = html;
};
};
setupSPLCans([ // <-- made some assumptions based on your code
{
data: () => ({ name: 'name1' }),
},
{
data: () => ({ name: 'name2' }),
},
]);
#SPLInput [type="radio"]:not(:checked), [type="radio"]:checked {
position: static;
opacity: 1;
pointer-events: initial;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<div id="SPLInput"></div>
我正在使用 firebase cloud firestore 在选举中保存多个候选人的名字。我正在尝试使用 JavaScript 创建一个表单,在单选按钮中显示每个候选人的姓名。我已将脚本连接到我的表单,但单选按钮不显示。它显示名称,但不显示按钮。该表单位于弹出模式中。控制台中没有错误。
这是我的代码:
const splCanList = document.querySelector('#SPLInput');
const setupSPLCans = (data) => {
let html = '';
if (data.length) {
data.forEach(doc => {
const SPLCan = doc.data();
const li = `
<input type="radio" name="SplElection" id="${SPLCan.name}" value="${SPLCan.name}" style="display:block;">${SPLCan.name}
<br>
`;
html += li
});
splCanList.innerHTML = html;
} else {
splCanList.innerHTML = html;
};
};
这里有很多遗漏的部分,但据我所知,这应该可行。
你没有在任何地方执行 setupSPLCans
函数,我不得不填补 data
形状的空白。
但是我所做的更改可能是您代码中的错误:
- 我将
html
声明向上移动了一个块,以便您的 else 子句可以访问它 - 您使用的material CSS自带的收音机会自动隐藏。我添加了一些 CSS 来对抗
const splCanList = document.querySelector('#SPLInput');
const setupSPLCans = (data) => {
let html = ''; // <-- moved this up a line
if (data.length) {
data.forEach(doc => {
const SPLCan = doc.data();
const li = `
<input type="radio" name="${SPLCan.name}" id="${SPLCan.name}" value="${SPLCan.name}" style="display:block;">${SPLCan.name}
<br>
`;
html += li
});
splCanList.innerHTML = html;
} else {
splCanList.innerHTML = html;
};
};
setupSPLCans([ // <-- made some assumptions based on your code
{
data: () => ({ name: 'name1' }),
},
{
data: () => ({ name: 'name2' }),
},
]);
#SPLInput [type="radio"]:not(:checked), [type="radio"]:checked {
position: static;
opacity: 1;
pointer-events: initial;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<div id="SPLInput"></div>