谁可以详细解释一下以下这段代码的具体意思,刚学JS,所以挺多都看不懂。是一个下拉导航的效果
<scripttype=text/javascript><!--//--><![CDATA[//><!--functionmenuFix(){varsfEls=docum...
<script type=text/javascript><!--//--><![CDATA[//><!--
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseDown=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseUp=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload=menuFix;
//--><!]]></script>
可以特别解释一下这两句吗,1. this.className+=(this.className.length>0? " ": "") + "sfhover";
2. this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"), 展开
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseDown=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseUp=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload=menuFix;
//--><!]]></script>
可以特别解释一下这两句吗,1. this.className+=(this.className.length>0? " ": "") + "sfhover";
2. this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"), 展开
展开全部
ID为nav下的所有li子标签里鼠标移开时class为原来的class名字加sfhover,如果原来有则中间加个空格!其他依次类推!页面加载的时候调用次函数! 这样写估计你就看懂了
var str = this.className;
if(str.length>0){
str = str + " " + "sfhover"
}else {
str = "sfhover"
}
你程序里面那是个三元表达式和上面的意思一样
第二个是正则表达式所有的className必须以sfhover开头\b是啥意思忘了去查下就知道了
var str = this.className;
if(str.length>0){
str = str + " " + "sfhover"
}else {
str = "sfhover"
}
你程序里面那是个三元表达式和上面的意思一样
第二个是正则表达式所有的className必须以sfhover开头\b是啥意思忘了去查下就知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
总结一下:
第一句:判断原来是否有className,没有的话添加一个sfhover,有的话就追加一个sfhover到className当中去,与之前的className中间会使用 "空格" 来分隔。
第二句:替换当前的className,将sfhover使用""来替换,即清除sfhover。
第一句:判断原来是否有className,没有的话添加一个sfhover,有的话就追加一个sfhover到className当中去,与之前的className中间会使用 "空格" 来分隔。
第二句:替换当前的className,将sfhover使用""来替换,即清除sfhover。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询