<script type="text/javascript">
var shq={}
shq.cmenu=function(e)
{
var e=window.event?window.event.srcElement:e.target;------①
if(/a/i.test(e.tagName)){------②
e.parentNode.className=e.className;------③
e.parentNode.nextSibling.innerHTML=e.innerHTML;------④ e.parentNode.nextSibling.style.cssText='border-top:none';------⑤
e.blur();------⑥
}
}
</script>
var shq={}
shq.cmenu=function(e)
{
var e=window.event?window.event.srcElement:e.target;------①
if(/a/i.test(e.tagName)){------②
e.parentNode.className=e.className;------③
e.parentNode.nextSibling.innerHTML=e.innerHTML;------④ e.parentNode.nextSibling.style.cssText='border-top:none';------⑤
e.blur();------⑥
}
}
</script>
shq.cmenu = function(e) {
/*1
利用三目运算符简化代码(自己看一下三目运算符 ? : 的运算规则,这条语句等价于:
if (window.event) e = window.event.srcElement;
else e = e.target;作用是通过window.event判断浏览器类型,如果window.event有定义,说明是IE浏览器。
srcElement、target属性的作用是一样的,都是对触发事件的元素对象的引用,IE浏览器中定义的是srcElement属性,标准浏览器下定义的是target属性
*/
var e = window.event ? window.event.srcElement : e.target;
if (/a/i.test(e.tagName)) { // /a/i是正则表达式对象,通过test()方法检查触发事件的元素对象的标签名是否为a(即链接)
e.parentNode.className = e.className; //设置e元素的父元素的类属性值为e元素的类属性值
e.parentNode.nextSibling.innerHTML = e.innerHTML; //设置与e元素的父元素同级并且位于父元素后面的邻居对象的内容为e元素的内容 e.parentNode.nextSibling.style.cssText = 'border-top:none'; //设置CSS
e.blur(); //使得e元素失去焦点
}
}
②正则表达式,判断元素是不是a标签。
③把当前元素的class属性赋给其父元素。
④把当前元素的内容赋给其父元素的下一个兄弟元素。
⑤当前元素的父元素的下一个兄弟元素加上样式'border-top:none'。
⑥当前元素失去焦点。例如,
<span><a class="AAA" href="BBB">CCC</a></span>
<div></div>执行函数后变成
<span class="AAA"><a class="AAA" href="BBB">CCC</a></span>
<div style="border-top:none">CCC</div>