js按类获取第一个元素时突然出错

我用这个很多年了:


function findFirstChildByClass(element, className) {

    var foundElement = null, found;

    function recurse(element, className, found) {

        for (var i = 0; i < element.childNodes.length && !found; i++) {

            var el = element.childNodes[i];

            var classes = el.className != undefined? el.className.split(" ") : [];

            for (var j = 0, jl = classes.length; j < jl; j++) {

                if (classes[j] == className) {

                    found = true;

                    foundElement = element.childNodes[i];

                    break;

                }

            }

            if(found)

                break;

            recurse(element.childNodes[i], className, found);

        }

    }

    recurse(element, className, false);

    return foundElement;

}

但突然,这一行抛出了一个错误:


var classes = el.className != undefined? el.className.split(" ") : [];


未捕获的类型错误:el.className.split 不是函数


我现在看不出出了什么问题。


缥缈止盈
浏览 106回答 1
1回答

翻过高山走不出你

这与 svg 复杂类名的使用有关。在重构一切之前,我很快解决了替换错误行的问题。if (el.className != undefined && typeof(el.className) === 'string') {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; classes = el.className.split(" ")&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; classes = []&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }svg 元素上的 className 属性是对象类型 SVGAnimatedString,因此没有 split 方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript