好懵逼啊 听了几遍。。

好懵逼啊 听了几遍。。

  1. searchClass: "light dark" 这里是什么意思?这是把light dark 传入函数当中的searchClass变量当中去的意思?还是什么意思?这个怎么用的不明白

  2.   为什么调用过程中不需要把opts传入函数当中去? 没传入opts 那函数如何执行?难道searchClass: "light dark" 是函数opts的值么? 那这个值如何在函数中运行的?我的理解这样对不对:以下是两个页面中的代码:1.searchClass: "light dark"  2.var searchClass=opts.searchClass    所以 是不是1的代码当中的“light dark” 值是传入到了2当中light dark.searchClass 意思搜索获取light dark这个文本节点上的属性节点的class名称集?

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

http://img1.sycdn.imooc.com//climg/5e36726909296aa419181003.jpg

希望可以帮到你!

卡布琦诺 2020-02-01 18:14:48

同学你好,关于同学的问题解答如下:

1、searchClass: "light dark"的意思是给searchClass传值,值为light dark

2、按照同学的理解也是可以的

http://img1.sycdn.imooc.com//climg/5e354e600981f98d09810498.jpg

3、tag!==*作用是判断是否传入了指定范围。以课程中的代码举例,如果传入的li, 那么就只返回对应类名为searchClass的li标签。

如果我的回答帮助了你,望采纳,如果还有疑问,可再次提问。祝学习愉快!

  • 提问者 陈立天 #1
    那传值后就是相当于 var searchClass=light dark.searchClass? 那这段又相当于什么意思了呢? 这里给他命名的变量 var searchClass 赋值到后面引用该变量的代码当中是代表什么东西? 这个变量是不是 里面相当于=light dark? 那点后面是起到个啥作用,那不如直接 var searchClass=opts不就好了?
    2020-02-01 22:51:07
提问者 陈立天 2020-01-30 18:27:17

这里用同学的正确代码尝试执行了 为啥console打印不出来? 然后IE浏览器和Chrome浏览器都报错了,而且还找不到这个myready是啥回事? 我不是引入JS文件了吗?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/JS/myready.JS"></script>
    <script src="/JS/getElementByClassName.js"></script>
    <script>
        myReady(function () {
            var myUl2 = document.getElementById("myUl2");
            var r = getelementsByClassName({
                searchName : "light dark",
                node:myUl2
            });
            console.log(r[0].innerHTML);
        });
    </script>
</head>
<body>
<ul id = "myUl">
    <li class = "light">1</li>
    <li class = "light dark">2</li>
    <li class="light">3</li>
</ul>
<ul id = "myUl2">
    <li class = "light">1</li>
    <li class = "light dark">s</li>
    <li class="light">3</li>
</ul>
</body>
</html>
var getelementsByClassName = function (opts) {
    var searchName = opts.searchName;
    var node = opts.node || document;
    var tag = opts.tag || "*";
    var result = [];
        if(document.getElementsByClassName){
        var nodes = document.getElementsByClassName(searchName);
        if (tag !=="*" ) {
            for (var i = 0; node === nodes[i++];) {
                if (node.tagName === tag.toUpperCase()) {
                    console.log("dsjfksjlfsa");
                    result.push(node);
                }
            }
        } else{

            result = nodes ;

            }
        return result;
    }else{
        var els = node.getElementsByTagName(tag);
        var elslen = els.length;
        var partern = new RegExp("(^|\\s)"+searchName + "(\\s|$)");
        var i,j;
        for( i=0,j=0;i<elslen;i++){
            if (partern.test(els[i].className)){//检测正则表达式
                result[j] = els[i];
                j++;
            }
        }
    }
}

http://img1.sycdn.imooc.com//climg/5e32ae980923283a14471268.jpg

http://img1.sycdn.imooc.com//climg/5e32aea109342b0715091268.jpg


http://img1.sycdn.imooc.com//climg/5e32aed30993606138320603.jpg

http://img1.sycdn.imooc.com//climg/5e32af2e09b10c3616951887.jpg

  • 提问者 陈立天 #1
    这个问题解决了。。引入的格式没写对,麻烦老师处理一下除了这个问题外的其他问题了。。这节课真的看得懵逼。。 花了一天时间研究一节课了。 - , -
    2020-01-30 18:32:38
提问者 陈立天 2020-01-30 17:48:44

3.另外这个tag!==* 就要做遍历是什么意思  这个*是啥意思??  这句话不理解 。 什么情况这个tag会==*什么情况不会==*?

  • 提问者 陈立天 #1
    我知道了 在opts=opts.tag 的情况不==* 是不是?
    2020-01-30 17:56:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师