关于css优先级和document.write()
更新日期:
最近照着慕课网的JavaScript教程对JavaScript进行了一次复习,过程中有一些小知识点的完善。
css优先级的问题
在JavaScript入门篇4-1的编程挑战中,题目要求是这样的:
小伙伴们,请编写”改变颜色”、”改变宽高”、”隐藏内容”、”显示内容”、”取消设置”的函数,点击相应按钮执行相应操作,点击”取消设置”按钮后,提示是否取消设置,如是执行操作,否则不做操作。
对于取消设置的操作,我想用到前面学到的控制类名className属性,即在css中新设置一个控制类,让它和原本的样式相同,当按取消设置的时候,即可回到最初的状态。
function cancle(){
var a = confirm("确定要取消设置?");
if(a == true){
text.className("oldStyle");
}
}
可是我发现并没有达到预计的效果。纠结了挺久,通过输出text.className,发现已经改为了oldStyle,然而样式并没有改变,由此才想到了css优先级的问题!当在oldStyle中引入了 !important 后终于达到了所要的效果。但解决这个问题用 !important 并不是一个好的方式,在今后也要注意 !important绝不可随便使用。
通过这次编程练习让我对css优先级有了切身的体会,虽然这个知识点已经看到过多次,但是在实际写代码中还是没有注意这些的概念。
document.write的问题
在一次编程练习中。我发现在JavaScript中写成下面两种方式产生的结果不同。
window.onload=function(){
document.write("系好安全带,准备起航——JS");
}
document.write("系好安全带,准备起航——JS");
用第一种方式时,页面中本来的内容都不见了,仅有document.write中的内容,而用第二种方式时,页面中本来的内容和document.write中的内容都出现了。
通过查资料,我知道了在页面加载后,浏览器的输出流会自动关闭,之后任何一个对当前页面进行操作的document.write()方法将打开一个新的输出流,将会清除当前页面的内容。
而第二种方式是在页面加载过程中调用的document.write()方法,由于是边加载边呈现的,因此是在页面中追加的内容。