js中可以限制无序清单列表的超链接吗?
js中可以限制无序清单列表中的最后一个li才能超链接吗?<li>工资、薪金所得</a>
<ul>
<li><a href="http://www.google.com" target="main">简介</a></li>
<li><a href="http://www.baidu.com" target="main">填写表格</a></li>
<li><a href="http://www.google.com" target="main">立即计算</a></li>
</ul>
</li>
我用了一个二级菜单的js,发现只有最后一个li(立即计算),点击之后才有反应。前面两个超链接都没有反应。 --------------------编程问答-------------------- 给出那个二级菜单的js,有点长
//javascript from http://www.smallrain.net
window.onload = mladdevents;
function mladdevents(){
if(window.mlrunShim == true){
var Iframe = document.createElement("iframe");
Iframe.setAttribute("src","about:blank");
Iframe.setAttribute("scrolling","no");
Iframe.setAttribute("frameBorder","0");
Iframe.style.zIndex = "2";
Iframe.style.filter = 'alpha(opacity=0)';
}
var effects_a = new Array();
var divs = document.getElementsByTagName('div');
for(var j=0;j<divs.length;j++){
if(divs[j].className.indexOf('mlmenu') != -1){
var lis = divs[j].getElementsByTagName('li');
for(var i =0;i<lis.length;i++){
lis[i].onmouseover = mlover;
lis[i].onmouseout = mloutSetTimeout;
if(window.mlrunShim == true){
lis[i].appendChild(Iframe.cloneNode(false));
}
if(lis[i].getElementsByTagName('ul').length > 0){
lis[i].className += 'haschild';
if(divs[j].className.indexOf('arrow') != -1){
if(divs[j].className.indexOf('vertical') != -1 || lis[i].parentNode.parentNode.nodeName != 'DIV'){
lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="vert">→</span>';
}
else{
lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="horiz">↓</span>';
}
}
else if(divs[j].className.indexOf('plus') != -1){
lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="plus">+</span>';
}
}
else{
if(divs[j].className.indexOf('arrow') != -1){
//This accounts for a wierd IE-specific bug in horizontal menus. CSS will set visibility: hidden;. This keeps the menu level(in IE)
lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="noshow">↓</span>';
}
}
var uls = lis[i].getElementsByTagName('ul');
for(var k=0;k<uls.length;k++){
var found = 'no';
for(var z=0;z<effects_a.length;z++){
if(effects_a[z] == uls[k]){
found = 'yes';
}
}
if(found == 'no'){
effects_a[effects_a.length] = uls[k];
uls[k].style.zIndex = '100';
mlEffectLoad(uls[k]);
}
}
}
}
}
}
function mloutSetTimeout(e){
if(!e){
var the_e = window.event;
}
else{
var the_e = e;
}
var reltg = (the_e.relatedTarget) ? the_e.relatedTarget : the_e.toElement;
if(reltg){
var under = ancestor(reltg,this);
if(under === false && reltg != this){
window.mlLast = this;
var parent = this.parentNode;
while(parent.parentNode && parent.className.indexOf('mlmenu') == -1){
parent = parent.parentNode;
}
if(parent.className.indexOf('delay') != -1){
window.mlTimeout = setTimeout(function(){mlout()},500);
}
else{
mlout();
}
}
}
}
function mlout(){
if(window.mlLast==null)return false;
var uls = window.mlLast.getElementsByTagName('ul');
var sib;
for(var i=0;i<uls.length;i++){
mlEffectOut(uls[i]);
if(window.mlrunShim == true){
sib = uls[i];
while(sib.nextSibling && sib.nodeName != 'IFRAME'){
sib = sib.nextSibling
}
sib.style.display = 'none';
}
}
window.lastover = null;
}
function mlover(e){
if(!e){
var the_e = window.event;
}
else{
var the_e = e;
}
the_e.cancelBubble = true;
if(the_e.stopPropagation){
the_e.stopPropagation();
}
clearTimeout(window.mlTimeout);
if(window.mlLast && window.mlLast != this && ancestor(this,window.mlLast) == false){
mlout();
}
else{
window.mlLast = null;
}
var reltg = (the_e.relatedTarget) ? the_e.relatedTarget : the_e.fromElement;
var ob = this.getElementsByTagName('ul');
var under = ancestor(reltg,this);
if(ob[0] && under == false){
if(window.lastover != ob[0]){
if(window.mlrunShim == true){
var sib = ob[0];
while(sib.nextSibling && sib.nodeName != 'IFRAME'){
sib = sib.nextSibling
}
ob[0].style.display = 'block';
sib.style.top = ob[0].offsetTop+'px';
sib.style.left = ob[0].offsetLeft-2+'px';
sib.style.width = ob[0].offsetWidth+'px';
sib.style.height = ob[0].offsetHeight-2+'px';
sib.style.border = '1px solid red';
sib.style.display = 'block';
}
mlEffectOver(ob[0],this);
window.lastover = ob[0];
}
}
}
function mlSetOpacity(ob,level){
if(ob){
//level is between 0 and 10
//need to convert to decimal for standard
var standard = level/10;
//need to convert to 0-100 scale for IE filter
var ie = level*10;
ob.style.opacity = standard;
ob.style.filter = "alpha(opacity="+ie+")"
}
}
function mlIncreaseOpacity(ob){
var current = ob.style.opacity;
if(lastob == ob && lastop == current){
//mlout has not interfered
current = current *10;
var upone = current +1;
mlSetOpacity(ob,upone);
lastob = ob;
lastop = upone/10;
}
}
function mlIncreaseHeight(ob){
var current = parseInt(ob.style.height);
var newh = current + 1;
ob.style.height = newh+'px';
}
function mlIncreaseWidth(ob){
var current = parseInt(ob.style.width);
var newh = current + 1;
ob.style.width = newh+'px';
}
function mlBlink(ob){
var newb = '1px solid red';
var old = '';
if(ob.style.border==old){
ob.style.border=newb;
}
else{
ob.style.border=old;
ob.style.borderTop = '1px solid';
}
}
function mlShake(ob){
var newp = '5px';
var old = '';
if(ob.style.paddingLeft==old){
ob.style.paddingLeft=newp;
}
else{
ob.style.paddingLeft=old;
}
}
function mlEffectOver(ob,parent){
switch(ob.className){
case 'fade':
ob.style.display = 'block';
if(ob.style.opacity == 0){
lastob = ob
lastop = 0;
for(var i = 1;i<=10;i++){
setTimeout(function(){mlIncreaseOpacity(ob)},i*50);
}
setTimeout(function(){ob.style.filter = ''},500);
}
break;
case 'blink':
ob.style.display = 'block';
for(var i=0;i<10;i++){
setTimeout(function(){mlBlink(ob)},i*50);
}
break;
case 'shake':
ob.style.display = 'block';
for(var i=0;i<10;i++){
setTimeout(function(){mlShake(ob)},i*50);
}
break;
case 'blindv':
ob.style.display = 'block';
if(ob.offsetHeight){
var height = ob.offsetHeight
ob.style.height = '0px';
ob.style.overflow = 'hidden';
for(var i=0;i<height;i++){
setTimeout(function(){mlIncreaseHeight(ob)},i*3);
}
setTimeout(function(){ob.style.overflow='visible';},height*3)
}
break;
case 'blindh':
ob.style.display = 'block';
if(ob.offsetWidth){
var width = ob.offsetWidth;
ob.style.width = '0px';
ob.style.overflow = 'hidden';
for(var i=0;i<width;i++){
setTimeout(function(){mlIncreaseWidth(ob)},i*3);
}
setTimeout(function(){ob.style.overflow='visible';},width*3)
}
break;
default:
ob.style.display = 'block';
break;
}
}
function mlEffectOut(ob){
switch(ob.className){
case 'fade':
mlSetOpacity(ob,0);
ob.style.display = 'none';
break;
case 'blink':
ob.style.border = '';
ob.style.display = 'none';
break;
case 'shake':
ob.style.paddingLeft = '';
ob.style.display = 'none';
break;
default:
ob.style.display = 'none';
break;
}
}
function mlEffectLoad(ob){
var parent = ob.parentNode;
while(parent.parentNode && parent.className.indexOf('mlmenu') == -1){
parent = parent.parentNode;
}
if(parent.className.indexOf('fade') != -1){
ob.style.display = 'none';
ob.className = 'fade';
mlSetOpacity(ob,0);
}
else if(parent.className.indexOf('blink') != -1){
ob.className = 'blink';
ob.style.display = 'none';
}
else if(parent.className.indexOf('shake') != -1){
ob.className = 'shake';
ob.style.display = 'none';
}
else if(parent.className.indexOf('blindv') != -1){
ob.className = 'blindv';
ob.style.display = 'none';
}
else if(parent.className.indexOf('blindh') != -1){
ob.className = 'blindh';
ob.style.display = 'none';
}
else{
ob.className = 'none';
ob.style.display = 'none';
}
}
function ancestor(child, parent){
if(child==null)return false;//Saves checking elsewhere
//This is a fix for a Firefox bug *gasp*
//Aparantly causes a bug in Opera!
//I see no choice but a browser detect. *sigh* I didn't want to have to do this.
if(navigator.userAgent.indexOf('Gecko') != -1 && navigator.userAgent.indexOf('Opera') == -1){
//This should only be run by Gecko based browsers. this code should be fine in everything but Opera so forge away browsers.
var allc = parent.getElementsByTagName('*');
for(var i= 0;i<allc.length;i++){
if(allc[i] == child){
return true;
}
}
}
else{
//http://www.dynamicdrive.com/forums/showthread.php?t=12341 Thanks Twey!
for(; child.parentNode; child = child.parentNode){
if(child.parentNode === parent) return true;
}
}
return false;
} --------------------编程问答-------------------- 没有这个限制,必然是js出了问题,你的js太长了,又没有排版,不好阅读,用ff的firebug插件调试下试试。 --------------------编程问答-------------------- 好好检查下 js,问题应该在这里面 --------------------编程问答-------------------- enen,js是太长了。挺难找问题的。
补充:.NET技术 , ASP.NET