在Javascript中向article元素添加EventListener

在Javascript中向article元素添加EventListener,javascript,draggable,addeventlistener,getelementsbytagname,html5-draggable,Javascript,Draggable,Addeventlistener,Getelementsbytagname,Html5 Draggable,我试图将ventListener添加到所有的文章元素中,这样当它们被单击时,它就会将它们变成一个可拖动的元素 我没有在这个任务中使用jQuery 尝试1: document.getElementsByTagName("ARTICLE").addEventListener('click', function(){ document.getElementsByTagName("ARTICLE").setAttribute('draggable', true);}); 尝试2: function d

我试图将ventListener添加到所有的文章元素中,这样当它们被单击时,它就会将它们变成一个可拖动的元素

我没有在这个任务中使用jQuery

尝试1:

document.getElementsByTagName("ARTICLE").addEventListener('click', function(){
document.getElementsByTagName("ARTICLE").setAttribute('draggable', true);});
尝试2:

function draggableTrue() {
    var addDrag = document.getElementsByTagName("article");
    addDrag.setAttribute('draggable', true);
}

//add event listener to articles
var draggableArticles = document.getElementsByTagName("article");
draggableArticles.addEventListener('onclick', draggableTrue);

在这两个例子中,我都得到了一个“Uncaught TypeError:undefined不是一个函数”,它通常指出我遗漏了一些东西,但在阅读之后,我不知道是什么。

好吧,你必须检查一下你的latters案例

但还有另一个问题,任何与DOM元素相关的代码都必须在加载某个元素(或由Javascript引擎标识)时执行。下面的事件(onload)确保加载窗口时,它执行分配给的闭包
window.onload=function(){}
是您可能需要的

window.onload = function(){
 // call your functions or document event listeners here
}
此外,标记名、标记名和类名都返回一个您已迭代的集合:

var allDivs = document.getElementsByTagName("div");

for(var i = 0; i < allDivs.length; i++)
{
   allDivs[i].addEventListener();
}
var allDivs=document.getElementsByTagName(“div”);
对于(var i=0;i
document.getElementsByTagName返回一个集合。因此,需要对其进行迭代以添加事件侦听器。此集合是本机DOM节点集合,而不是jquery集合,因此不能在集合上使用addEventListener

var articles = document.getElementsByTagName("ARTICLE");
var eventListener = function(){console.log('clicked an articles')}

for(var i=0; i<articles.length; i++){
    articles[i].addEventListener('click', eventListener );
}
var articles=document.getElementsByTagName(“ARTICLE”);
var eventListener=function(){console.log('clicked an articles')}

对于(VarI=0;iartial应该是小写,这其实并不重要。是的,我第一次看到这个()我想我应该试试大写。
getElementsByTagName
返回一个节点列表,您应该迭代返回的列表,然后调用该方法。从性能角度看,处理程序应该在
for
循环的外部定义。太好了,谢谢您的解释!我看到了HTMLCollection(此处注释)但我认为这是因为我缺乏经验。我只是想确认一下,是否有可能在单击的文章中添加“setAttribute”(“draggable”,true);”。我觉得我只是试图在函数中添加.getElementsByTagName来创建一个循环。