请帮我改下javascript获取li下面的a

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请帮我改下javascript获取li下面的a相关的知识,希望对你有一定的参考价值。

我现在是获取了整个文档下面的a 标签,请帮改下只获取 li 标签下面的a,这样对其它标签就不会产生影响了.
<script>
window.onload=function ()

var aBtn=document.getElementsByTagName( 'a' );
var i = 0;
for(i=0; i<aBtn.length;i++)

aBtn[i].onclick = function()

for(i=0;i<aBtn.length;i++)

aBtn[i].className='border-right';

this.className='active';



</script>

你好!


代码粗糙,仅供参考:

<script type="text/javascript">
function getElementChildren(ele, tagName) 
    if (!ele && !ele.nodeType && ele.nodeType !== 1) 
        alert('arguments error!');
        return;
    

    var a = [];
    var children = ele.childNodes;
    if (tagName)  //判断一下是不是传了第二个参数
        //alert("传入了参数");
        if (typeof tagName != 'string')  //判断第二个参数的类型是不是正确
            alert('第二个参数类型不对!arguments[1] is error!');
            return;
        

        for (var i = 0; i < children.length; i++) 
            if (children.item(i).nodeType === 1 && children.item(i).tagName.toLowerCase() == tagName.toLowerCase()) 
                a.push(children.item(i));
            
        

     else  //没有传第二个参数,则这样做(既不用考虑标记名)
        for (var i = 0; i < children.length; i++) 
            if (children.item(i).nodeType === 1) 
                a.push(children.item(i))
            
        

    
    return a; //最终返回的这个数值,就是ele的所有


  window.onload=function ()

var _li = document.getElementsByTagName("li");
for(var x=0; x<_li.length; x++)
    var aBtn= getElementChildren( _li[x], 'a' );
    var i = 0;
    for(i=0; i<aBtn.length;i++)
    aBtn[i].onclick = function()
             for(i=0;i<aBtn.length;i++)
         aBtn[i].className='border-right';
             
             this.className='active';
            
    


</script>

追问

感谢,,,辛苦了,不过有些小问题,就是当选中之后再选择其它的,class 不能返回 border-right,还是保持着acvtive状态

追答

你是要所有li下面只有一个<a>是active的么?

window.onload=function ()
    
        var _a = [];
        var _li = document.getElementsByTagName("li");
        //循环所有<li>
        for(var x=0; x<_li.length; x++)
            //得到<li>下所有<a>
            var aBtn= getElementChildren( _li[x], 'a' );
            //循环所有<a>
            for(var i=0; i<aBtn.length;i++)
                _a.push(aBtn[i]);
            
        
        
        for(var y=0; y<_a.length; y++)
            _a[y].onclick = function()
                for(var j=0; j<_a.length;j++)
                    _a[j].className = 'border-right'; 
                
                this.className='active';  
            
        
    

参考技术A 用Jquery 这样写 var aBtn=$("li a");

或者 var aBtn=var aBtn=document.getElementsByTagName( 'a' );

var aBtn1=new Array();
for(var a in aBtn)
if(a.parentNode.nodeName!="li")

aBtn1.push(a);
参考技术B var li = document.getElementById(li的ID);
var a = li.getElementsByTagName("a");
参考技术C 用jquery这样获取 $('li>a') 这就表示li下的啊 不明白的话可以留言 参考技术D JQUERY的

$("li>a") 只包含儿子级

$("li a") 包含所有子级

div四周都加阴影如何改下面的代码

border:#074A99 0px solid;
filter:progid:DXImageTransform.Microsoft.Shadow(color=#074A99,strength=4);/*ie*/
-moz-box-shadow: 6px 6px 20px #074A99;/*firefox*/
-webkit-box-shadow: 6px 6px 20px #074A99;/*safari或chrome*/
box-shadow:6px 6px 10px #074A99;/*opera或ie9*/

box-shadow 前面两个值为 纵向阴影 和 横向阴影

把这两个值都设置为 0 就是四边都有阴影

border:#074A99 0px solid;
filter:progid:DXImageTransform.Microsoft.Shadow(color=#074A99,strength=4);/*ie*/
-moz-box-shadow: 0 0 20px #074A99;/*firefox*/
-webkit-box-shadow: 0 0 20px #074A99;/*safari或chrome*/
box-shadow: 0 0 10px #074A99;/*opera或ie9*/
参考技术A 0px 不能简写成0!

box-shadow:0px 10px 5px #000;

介绍
0px 阴影向右偏移量,为0
10px 阴影向下偏移量,为10px
5px 阴影的过渡距离,为5px
#000阴影颜色,为黑色

给你一个DEMO

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#div1width:100px; height:100px; background:green; box-shadow:0 10px 5px #000
</style>
<body>
<div id="div1"></div>

以上是关于请帮我改下javascript获取li下面的a的主要内容,如果未能解决你的问题,请参考以下文章

C语言指针初学者 请帮我看看下面的提 为啥调用函数返回值是char型的 这样不就只能返回一个字符了吗

请帮我弄清楚 Array concat() 方法并编写纯 Javascript 代码

请帮我看看这段javascript函数错在哪里

电子邮件表单交互

java 简易计算器(帮我改一改,增加几个功能)

如何在 Ajax 加载后执行 javascript?