如何在javascript中按类名获取html元素
我想获得类如何在javascript中按类名获取html元素,javascript,html,Javascript,Html,我想获得类fontsizer的两个html按钮。我需要创建一个变量,将按钮存储在变量中,然后循环遍历该变量,并为两个按钮中的每一个分配一个事件处理程序,用于onclick。最后,单击按钮时,它应该运行名为resizeText的方法 以下是我的JavaScript代码: function startup() { var fontButtons = document.getElementsByClassName("fontsizer"); var i; alert(fontB
fontsizer
的两个html按钮。我需要创建一个变量,将按钮存储在变量中,然后循环遍历该变量,并为两个按钮中的每一个分配一个事件处理程序,用于onclick
。最后,单击按钮时,它应该运行名为resizeText
的方法
以下是我的JavaScript代码:
function startup() {
var fontButtons = document.getElementsByClassName("fontsizer");
var i;
alert(fontButtons.length);
for (i = 0; i < fontButtons.length; i++) {
fontButtons.elements[i].onclick = resizeText(this);
}
function resizeText(objButton) {
var fontChange;
fontChange = parseFloat(objButton.value);
if (document.body.style.fontSize == "") {
document.body.style.fontSize = "1.0em";
}
var currentFontSize;
alert("changed");
currentFontSize = parseFloat(document.body.style.fontSize);
currentFontSize = currentFontSize+fontChange;
document.body.style.fontSize = "currentFontSize+em"
}
函数启动(){
var fontButtons=document.getElementsByClassName(“fontsizer”);
var i;
警报(fontButtons.length);
对于(i=0;i
在我的浏览器中,
resizeText
函数没有运行。在循环之前检查fontButtons
的大小时,它是0
。我哪里出错了?onclick的事件处理程序被分配给了undefined。这就是处理程序的外观
fontButtons[i].onclick=function(){resizeText(this);};
原因是这行代码有几个问题
fontButtons.elements[i].onclick=resizeText(this);
首先,fontButtons
已经是一个节点列表,其中包含页面上匹配的元素,因此使用.elements
将不包含任何元素。其次,这将为resizeText函数调用的结果分配onclick处理程序。由于函数不返回任何内容,因此分配未定义
使用匿名函数作为回调调用
resizeText
将允许创建新的执行上下文。事件处理程序创建的上下文将绑定一个新值到此上,从而允许将创建事件的当前元素发送到resizeText
函数。事件处理程序onclick被分配给undefined。这是处理程序的外观
fontButtons[i].onclick=function(){resizeText(this);};
原因是这行代码有几个问题
fontButtons.elements[i].onclick=resizeText(this);
首先,fontButtons
已经是一个节点列表,其中包含页面上匹配的元素,因此使用.elements
将不包含任何元素。其次,这将为resizeText函数调用的结果分配onclick处理程序。由于函数不返回任何内容,因此分配未定义
使用匿名函数作为回调调用resizeText
将允许创建新的执行上下文。事件处理程序创建的上下文将绑定一个新值到此上,从而允许将创建事件的当前元素发送到resizeText
函数。事件处理程序onclick被分配给undefined。这是处理程序的外观
fontButtons[i].onclick=function(){resizeText(this);};
原因是这行代码有几个问题
fontButtons.elements[i].onclick=resizeText(this);
首先,fontButtons
已经是一个节点列表,其中包含页面上匹配的元素,因此使用.elements
将不包含任何元素。其次,这将为resizeText函数调用的结果分配onclick处理程序。由于函数不返回任何内容,因此分配未定义
使用匿名函数作为回调调用resizeText
将允许创建新的执行上下文。事件处理程序创建的上下文将绑定一个新值到此上,从而允许将创建事件的当前元素发送到resizeText
函数。事件处理程序onclick被分配给undefined。这是处理程序的外观
fontButtons[i].onclick=function(){resizeText(this);};
原因是这行代码有几个问题
fontButtons.elements[i].onclick=resizeText(this);
首先,fontButtons
已经是一个节点列表,其中包含页面上匹配的元素,因此使用.elements
将不包含任何元素。其次,这将为resizeText函数调用的结果分配onclick处理程序。由于函数不返回任何内容,因此分配未定义
使用匿名函数作为回调来调用resizeText
将允许创建新的执行上下文。事件处理程序创建的上下文将绑定一个新值到此上,从而允许将创建事件的当前元素发送到resizeText
函数。fontButtons.elements[i]应该是fontButtons[i]fontButtons。元素[i]应该是fontButtons[i]fontButtons。元素[i]应该是fontButtons[i]fontButtons[i]仍然没有变化。我认为行var fontButtons=document.getElementsByClassName(“fontsizer”);不检索元素。因为循环之前的警报显示0为元素的长度fontButtons@mungaihkamau-确保在将元素加载到DOM中后执行脚本,方法是将脚本放在页面的最底部,正好在结束body标记之前,或者将其包装在window.onload=function(){startup();};
仍然没有更改。我认为行var fontButtons=document.getElementsByClassName(“fontsizer”);不检索元素。因为循环之前的警报显示0为元素的长度fontButtons@mungaihkamau-确保在将元素加载到DOM中后执行脚本,方法是将脚本放在页面的最底部,正好在结束body标记之前,或者将其包装在window.onload=function(){startup();}
仍然没有更改。我认为行var fontButtons=document.getElementsByClassName(“fontsizer”);无法检索元素。因为循环之前的警报显示0为元素的长度fontButtons@mungaihkamau-确保已执行脚本