我有一个函数,我通过将它的id传递给一个函数然后添加一个事件监听器来动态地尝试访问DOM元素,这个代码在函数外部完美地运行但是它在这里不起作用。函数看起来像这样:
var count = 0;
function disableOnCheck(radioId, textBoxId) {
var a = document.getElementById(radioId);
var atext = document.getElementByID(textBoxId)
alert(a.value);
a.addEventListener('click', function (event) {
alert(count);
count++;
if (count === 2) {
a.checked = false;
atext.disabled = false;
count = 0;
return;
}
alert(a.value);
atext.disabled = true;
});
};
我使用以下方式运行:
disableOnCheck( '一个', 'ATEST');
此外,我创建了一个小提琴http://jsfiddle.net/vamsiampolu/vKkUP/2/
答案 0 :(得分:1)
JavaScript区分大小写。它应该是:
var atext = document.getElementById(textBoxId);
而不是
var atext = document.getElementByID(textBoxId);
如果您尝试使用它,您会在控制台中看到错误(未捕获TypeError:对象#没有方法'getElementByID')。
<强>更新强>
由于您在
disableOnCheck
函数中传入了错误的变量,因此无法得到您想要的内容。
您有disableOnCheck('a', 'atest');
什么时候应该是disableOnCheck('a', 'atext');
请参阅Fiddle
答案 1 :(得分:0)
将document.getElementByID
更改为document.getElementById
答案 2 :(得分:-1)
首先,您尝试通过错误的方法获取元素Id,javascript是区分大小写的语言
这是一个工作代码:
var count = 0;
function disableOnCheck(radioId, textBoxId) {
var a = document.getElementById(''+radioId);
var atext = document.getElementById(''+textBoxId); // you were using getElementByID which is wrong
alert(a.value);;
a.addEventListener('click', function (event) {
alert(count);
count++;
if (count === 2) {
a.checked = false;
atext.disabled = false;
count = 0;
return;
}
alert(a.value);
atext.disabled = true;
});
};
disableOnCheck('a','atext'); // HERE you were using `atest` which is not a element id it's `atext`
小提琴链接是here.