2014-03-06 24 views
0

我尝试做在形容 - check if checkbox is checked javascript检查是检查了 - <INPUT TYPE =“复选框”>

这是我的代码 -

var input = document.createElement("input"); 
input.name = "test"; 
input.type = "checkbox"; 
input.checked = true ; 
var currentInput = document.getElementsByName("test"); 
if (currentInput.checked) { 
    console.log("true"); 
} 

但是运行之后没有日志到控制台虽然input.checked = true分配。

为什么不记录true

编辑:

根据什么@adeneo和@ mori57说,现在后续 -

var input = document.createElement("input"); 
input.name = "test"; 
input.type = "checkbox"; 
input.checked = true; 
var body = document.getElementsByTagName('body')[0]; 
body.appendChild(input); 
var currentInput = document.getElementsByName("test")[0]; 
if (currentInput.checked) { 
    console.log("true"); 
} 

日志true

+0

getElementsByName( '测试')[0]? – rpax

回答

1

的问题是,document.getElementsByName("test")返回一个数组,所以你将需要使用阵列的某个元素:

如果是只有一个,你可以选择第一个:

document.getElementsByName("test")[0] 

所以,你的新代码将是:

var input = document.createElement("input"); 
input.name = "test"; 
input.type = "checkbox"; 
input.checked = true ; 
var currentInput = document.getElementsByName("test")[0]; 
if (currentInput.checked) { 
    console.log("true"); 
} 

正如mori57的评论指出,

你永远不会创建元素,导致它不可能被发现。您将需要使用的东西,如:

document.body.appendChild(input); 

为了宣布currentInput之前,它能够被发现。

+3

我是唯一一个注意到OP的代码不会将元素添加到DOM的人吗? DOM找不到或不包含.... –

+0

这是非常真实的。 – Anonymous

2

只要看到getElements..,如复数,而不是getElement...这意味着你得到一个nodeList不是一个单一的元素,即使只有一个该元素nodeList

您可以访问nodeLists像阵列,所以nodeList[0]在列表中

var currentInput = document.getElementsByName("test")[0]; 

当然的第一要素,你已经有了一个对元素的引用,这样你就不必再次得到它

var input = document.createElement("input"); 
input.name = "test"; 
input.type = "checkbox"; 
input.checked = true ; 

if (input.checked) { // this will always be true, so it makes no sense 
    console.log("true"); 
} 

正如在@ mori57的评论中指出的那样,您绝不会将元素添加到DOM,所以当它不存在时,您无法使用document.getEleme....方法获取它。

我猜你真正想要的是一个事件处理程序

var input = document.createElement("input"); 
input.name = "test"; 
input.type = "checkbox"; 
input.checked = true ; 

input.addEventListener('change', function() { 
    console.log(this.checked); 
}, false);