函数仅适用于 getElementById
Function only works with getElementById
我有附加事件的功能:
function addEvent(object, type, callback) {
if (object == null || typeof(object) == 'undefined') return;
if (object.addEventListener) {
object.addEventListener(type, callback, false);
} else if (object.attachEvent) {
object.attachEvent("on" + type, callback);
} else {
object["on"+type] = callback;
}
};
还有一个用于测试的小按钮:
<a href="#" class="btn btn-primary btn-toggle" id="btn-toggle-action">Toggle</a>
我试着调用它,但我看到了:
addEvent(document.getElementById('btn-toggle-action'), 'click', function(e) {}); //WORKS
addEvent(document.getElementByClassName('btn-toggle'), 'click', function(e) {}); //DON'T WORK
addEvent($('.btn-toggle'), 'click', function(e) {}): //DON'T WORK
addEvent($('#btn-toggle-action'), 'click', function(e) {}); //DON'T WORK
我想了解为什么它不能适用于所有方法。
可能是document.getElementByClassName('btn-toggle')returns对象数组。需要:
if(typeof object === 'array'){
for(obj in object){
...
}
}
PS。 $() returns $-对象,但没有 dom-元素。
首先,写入错误:document.getElementByClassName
应该是document.getElementsByClassName
,因为它select个元素。
jquery select或者与原生不同 select或者,参见 document-getelementbyid-vs-jquery
你可以使用更强大的原生select或者喜欢:
document.querySelector('#btn-toggle-action')
document.querySelectorAll('.btn-toggle')
我有附加事件的功能:
function addEvent(object, type, callback) {
if (object == null || typeof(object) == 'undefined') return;
if (object.addEventListener) {
object.addEventListener(type, callback, false);
} else if (object.attachEvent) {
object.attachEvent("on" + type, callback);
} else {
object["on"+type] = callback;
}
};
还有一个用于测试的小按钮:
<a href="#" class="btn btn-primary btn-toggle" id="btn-toggle-action">Toggle</a>
我试着调用它,但我看到了:
addEvent(document.getElementById('btn-toggle-action'), 'click', function(e) {}); //WORKS
addEvent(document.getElementByClassName('btn-toggle'), 'click', function(e) {}); //DON'T WORK
addEvent($('.btn-toggle'), 'click', function(e) {}): //DON'T WORK
addEvent($('#btn-toggle-action'), 'click', function(e) {}); //DON'T WORK
我想了解为什么它不能适用于所有方法。
可能是document.getElementByClassName('btn-toggle')returns对象数组。需要:
if(typeof object === 'array'){
for(obj in object){
...
}
}
PS。 $() returns $-对象,但没有 dom-元素。
首先,写入错误:document.getElementByClassName
应该是document.getElementsByClassName
,因为它select个元素。
jquery select或者与原生不同 select或者,参见 document-getelementbyid-vs-jquery
你可以使用更强大的原生select或者喜欢:
document.querySelector('#btn-toggle-action')
document.querySelectorAll('.btn-toggle')