不可以??我不知道你的测试环境是什么样子的,拿下面的试试 <script type="text/javascript"> var change=function(elem,att,val){ elem.style[att]=val; } window.onload=function(){ var buttons=document.getElementById("myinput").getElementsByTagName("input"); var box=document.getElementById("box"); var att=["height","width","backgroundColor","display","display"]; var val=["200px","200px","red","none","block"]; for(var i=0;i<5;i++){ (function(i){ buttons[i].onclick=function(){ change(box,att[i],val[i]); } })(i) } } </script><div id="box"></div> <div id="me"> <input type="button" value='set1' /> <input type="button" value='set2' /> <input type="button" value='set3' /> <input type="button" value='set4' /> <input type="button" value='set5' /> </div>
win7旗舰版,ie8和chrome都不可以啊
不好意思,发贴时临时改了下面div的命名,但代码里忘了更正了,将 var buttons=document.getElementById("myinput").getElementsByTagName("input"); 修改为: var buttons=document.getElementById("me").getElementsByTagName("input"); 测试环境:IE6~IE8,FF,Chrome,Safari均通过。你最好是把代码拿去单独测试
change(box,att[this.index],val[this.index]);
//这里为什么用att[i],val[i]获取不到值呢,求解释
}这个box 失效了 这些写 buttons[i].onclick=function(){
var box=document.getElementById("box");
change(box,att[this.index],val[this.index]);
//这里为什么用att[i],val[i]获取不到值呢,求解释
}
确保id=box容器有没有?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>控制div属性</title>
<style>
#outer{width:500px;margin:0 auto;padding:0;text-align:center;}
#div1{width:100px;height:100px;background:black;margin:10px auto;display:block;}
</style>
<script>
var changeStyle = function (elem, attr, value)
{
elem.style[attr] = value
};
window.onload = function ()
{
var oBtn = document.getElementsByTagName("input");
var oDiv = document.getElementById("div1");
var oAtt = ["width","height","background","display","display"];
var oVal = ["200px","200px","red","none","block"]; for (var i = 0; i < oBtn.length; i++)
{
oBtn[i].index = i;
oBtn[i].onclick = function ()
{
this.index == oBtn.length - 1 && (oDiv.style.cssText = "");
changeStyle(oDiv, oAtt[this.index], oVal[this.index])
}
}
};
</script>
</head>
<body>
<div id="outer">
<input type="button" value="变宽" />
<input type="button" value="变高" />
<input type="button" value="变色" />
<input type="button" value="隐藏" />
<input type="button" value="重置" />
<div id="div1"></div>
</div>
</body>
</html>var changeStyle = function (elem, attr, value)
{
elem.style[attr] = value
};
主要是这个函数,它改变的是div的style的属性值通过传不同的参数,改变div的大小,颜色
buttons[i].onclick=function(){
change(box,att[i],val[i]);
}
})(i)
不过还有个问题,
#div{height:200px;width:200px;display:block;background:red;}
如果在js中对上边这个div的style属性进行了修改
然后执行div.style.cssText=""这个语句
为什么div又可以按原来的方式呈现了
难道那句话只是清除后来加上的属性?
<script type="text/javascript">
var change=function(elem,att,val){
elem.style[att]=val;
}
window.onload=function(){
var buttons=document.getElementById("myinput").getElementsByTagName("input");
var box=document.getElementById("box");
var att=["height","width","backgroundColor","display","display"];
var val=["200px","200px","red","none","block"];
for(var i=0;i<5;i++){
(function(i){
buttons[i].onclick=function(){
change(box,att[i],val[i]);
}
})(i)
}
}
</script><div id="box"></div>
<div id="me">
<input type="button" value='set1' />
<input type="button" value='set2' />
<input type="button" value='set3' />
<input type="button" value='set4' />
<input type="button" value='set5' />
</div>
var buttons=document.getElementById("myinput").getElementsByTagName("input");
修改为:
var buttons=document.getElementById("me").getElementsByTagName("input");
测试环境:IE6~IE8,FF,Chrome,Safari均通过。你最好是把代码拿去单独测试