为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样最后不能“取消设置”?

为什么最后不能用控制类名的方法取消设置呢?求解

正在回答

3 回答

因为one已经不是原来的one,样式已经被之前的JS改变了。建议用removeAttribute()方法吧。

function cancel(){
       var myset=confirm("是否取消设置?")
       if(myset==true){
           mychar.removeAttribute('style');
      }
   }//定义"取消设置"的函数


0 回复 有任何疑惑可以回复我~
#1

Julieljy 提问者

非常感谢!
2015-08-07 回复 有任何疑惑可以回复我~

不好意思 我说的关于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设置的样式不会起作用。

1 回复 有任何疑惑可以回复我~

不知道我这么说能不能听懂,首先注意你的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)设置的默认样式。

2 回复 有任何疑惑可以回复我~
#1

来自疯人院的我 回复 Julieljy 提问者

我也有这个疑问,呵呵。我同样是应用className无效才跑来看的。@爱丽丝走丢了 所说的我尚有存疑,但感觉也有些道理。看来这个className并不是那么好用哦。
2015-08-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这样最后不能“取消设置”?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信