代码的主要问题(您在评论中发布,我复制到问题中)是它只包含一个函数定义。该函数根本没有被调用,所以需要有一个像test()
. 此外,该函数假定id=divTxt
页面上有一个元素,并且该元素必须出现在调用该函数之前。以下代码成功创建了一个单选按钮元素及其标签,并将它们插入到页面上的现有元素中:
<!DOCTYPE html>
<title>Demo</title>
<div id=divTxt></div>
<script>
function test() {
var element = document.createElement("input");
//Assign different attributes to the element.
element.setAttribute('type', 'radio');
element.setAttribute('value', 'source');
element.setAttribute('name', 'source');
element.setAttribute('id', 'source_id');
var foo = document.getElementById("divTxt");
foo.appendChild(element);
var newlabel2 = document.createElement("Label");
newlabel2.setAttribute('for', "source_id");
newlabel2.innerHTML = "first name ";
foo.appendChild(newlabel2);
}
test();
</script>
(您不能for
在 JavaScript 中使用该属性;属性名称为htmlFor
,但按上述设置for
属性可能更简单。)
但是,由于单选按钮的性质,单选按钮应始终以组的形式出现,因此您应该使用带有一些参数的函数根据通用模式生成一组单选按钮。像这样:
<!DOCTYPE html>
<title>Demo</title>
<div id=divTxt></div>
<script>
function radio(name, value, text) {
var element = document.createElement("input");
var id = name + value;
element.setAttribute('type', 'radio');
element.setAttribute('value', value);
element.setAttribute('name', name);
element.setAttribute('id', id);
var foo = document.getElementById("divTxt");
foo.appendChild(element);
var newlabel2 = document.createElement("label");
newlabel2.setAttribute('for', id);
newlabel2.innerHTML = text;
foo.appendChild(newlabel2);
}
radio('sex', '0', 'male');
radio('sex', '1', 'female');
</script>
您应该通过添加在项目之间添加换行符的代码来最小程度地增强这一点,或者最好将每对按钮及其标签放在div
elemebt 中。