为什么最后不能用控制类名的方法取消设置呢?求解
因为one已经不是原来的one,样式已经被之前的JS改变了。建议用removeAttribute()方法吧。
function cancel(){ var myset=confirm("是否取消设置?") if(myset==true){ mychar.removeAttribute('style'); } }//定义"取消设置"的函数
不好意思 我说的关于className不正确 应该是object.className=classname object是用document.ElementById获取的对象名。mychar.className="one"没问题
但是在设置style和className后,同样是:
<div id="txt" style="width:XXX height:XXX dispaly: XXX " class="one">
但是行内样式优先级大于内联样式,所以one设置的样式不会起作用。
不知道我这么说能不能听懂,首先注意你的mychar,它是变量(变量类型是Object),不是标签id。之前讲过更改className属性是为标签更改的。因此若想div应用one样式,应该是 txt.className="one".
但是这么做也不会成功,这是因为在你设置了一系列 mychar.style.XXX后,就相当于这样:
<div id="txt" style="width:XXX height:XXX dispaly: XXX ">
然后若按照我更改的 txt.className="one",会变成这样:
<div id="txt" style="width:XXX height:XXX dispaly: XXX " class="one">
相当于为div标签添加了行内样式属性和class属性,而之前学过行内样式优先级大于内联样式,因此div样式还是用的行内样式,不会取消设置。
因此最快捷的做法就是不用设置className,也不用在添加one样式,直接用
mychar.removeAttribute("style");(为什么不用txt.removeAttribute("style"),这是因为txt仅仅是标签,而只有对象才具有属性和方法,这也就是之前为什么要var mychar=document.getElementById("txt")了,会将id为txt的标签转换为对象。)
这样就会变成
<div id="txt">
这样可以取消style属性,会恢复为div的id(txt)设置的默认样式。