js代码获取元素class属性,firebug报错:obj.getattribute is not a function

js代码获取元素class属性,firebug报错:obj.getattribute is not a function,第1张

var listname=linkgetAttribute("class");

link 没有getAttribute方法

追问

最开始是这样写的:

function changeBackgroundColor(obj){

var listname=objgetAttribute("class");

}

在之前还试过使用objclassName,代码都可以运行但是会报错

追答

你可以用consoledir(obj)看这个obj对象有那些属性和方法

var DateFunc = function (self) {

    var span = selfgetElementsByTagName('span');

    var date;

    for (var i = 0; i < spanlength; i += 1) {

        var s = span[i];

        if (sclassName === 'date') {

            date = sinnerHTML;

            break;

        }

    }

    alert(date);

}<li id="hide1" onClick="DateFunc()">

改成

<li id="hide1" onClick="DateFunc(this)">

这是因为getElementById再结合children属性获取的是DOM元素,而querySelectorAll获取的则是NodeList对象元素。前者会随页面DOM结构的变化而变化,比如删除了box中的一个div,这个div就会从children中被“真实地”删掉,childrenlength的计数也会减1。而后者如果删除其中的某个子元素,被删的元素并不会消失,而是变成一个空对象,children1length的计数也不会改变,这样的话 for(var i=0;i<children1length;) 这个循环由于i的值不变(总是等于0),而children1length也不会减少(总是4),这样就变成死循环了(同时也意味着把一个已删除的元素不断重复删除)。

改成这样就没问题了:

for(var i=0;i<children1length;i++){

  boxremoveChild(children1[i]);

}

在获取子元素之前js肯定不知道总共有多少个子元素,所以子元素都是以元素集合的形式出现的(即使子元素只有一个甚至没有),然后再从中枚举出每个子元素,比如:

elemchildNodes[0]

//这是第一个子元素

elemchildNodes[1]

//这是第二个子元素,依此类推

此外,还可以使用children,它也是个集合,用法一样:

elemchildren[0]

//这是第一个子元素

elemchildren[1]

//这是第二个子元素,依此类推

childNodes和children的区别在于,前者会把文本元素(含回车、空格等)也作为子元素,后这则只把标签元素作为子元素

此外,如果知道子元素的ID、Name、Class或者标签名,也可以直接获取子元素,比如:

elemgetElementById("abc")

//获取id为abc的子元素(ID具有唯一性,所以它可以直接获取)

elemgetElementsByName("xxx")[0]

//获取name属性为xxx的第一个子元素(name属性允许重名,所以它是个集合)

elemgetElementsByClassName("hehe")[0]

//获取class为hehe的第一个子元素(class属性也是可以重名的)

elemgetElementsByTagName("a")[0]

//获取第一个a标签子元素

documentgetElementById("slide_time")children[0]children[0]className

documentgetElementById("slide_time")childNodes[0]childNodes[0]className

是获得索引么不考虑兼容问题,用一下documentgetElementsByClassName

var child = documentgetElementsByClassName("child");

for (var i = 0; i < childlength; i++) {

    var a = child[i];

    aindex = i;//给每个className为child的元素添加index属性;

    aonclick = function () {

        alert(thisindex)

    }

}

这样你每次点击就能获得你点击的元素的index

以上就是关于js代码获取元素class属性,firebug报错:obj.getattribute is not a function全部的内容,包括:js代码获取元素class属性,firebug报错:obj.getattribute is not a function、JS函数 如何获得触发该函数的子元素的内容、JavaScript获取子元素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9613936.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存