Javascript 最后一步排序错误。函数getColor

Javascript 最后一步排序错误。函数getColor,javascript,html,function,sorting,wrapper,Javascript,Html,Function,Sorting,Wrapper,当我将一个变量作为前一个函数的包装发送到函数时,我无法理解我做错了什么 函数GetColor必须在输入端接收两个值(变量排序和变量a),然后比较它们。如果a[i].getAttribute('href')的某些值与sort[i]的值匹配,请在屏幕上打印这些标记a,并将这些标记a绘制在DOM中的黄色 现在,我对之前丢弃的值GetColor的输出进行奇数排序”http://internal.com/“在GetSortfunc中 我认为这是我在传递函数参数方面的错误 我将感谢你的帮助 <scri

当我将一个变量作为前一个函数的包装发送到函数时,我无法理解我做错了什么

函数GetColor
必须在输入端接收两个值(
变量排序
变量a
),然后比较它们。如果
a[i].getAttribute('href')
的某些值与
sort[i]
的值匹配,请在屏幕上打印这些
标记a
,并将这些
标记a
绘制在
DOM
中的黄色

现在,我对之前丢弃的值GetColor的输出进行奇数排序
”http://internal.com/“
GetSort
func中

我认为这是我在传递函数参数方面的错误

我将感谢你的帮助

<script>

    let a = document.body.getElementsByTagName('a');

    function getList(list) { // creating an array from all a tag elements.

        let arr = [];
        for (let i = 0; i < a.length; i++) {

            if (a[i].getAttribute('href')) {
                arr.push(a[i].getAttribute('href'));        

            }
        }

        return arr;
    };

    function getSort(f) { // sort array given from getList() by symbols 'http'...

      let sorting;
      let arr = [];
      for (let i = 0; i < f.length; i++) {

         if (f[i].includes('://') && !f[i].includes('http://internal.com/')) {
            console.log(f[i]);
            arr.push(f[i]);
         }
      }

      return arr; // [ "http://google.com" , "ftp://ftp.com/my.zip" , 
                    // "http://nodejs.org" ]
    };

    let sort = getSort(getList());

    console.log(sort);

    function getColor(sort) { // paint a tags based on sort elements from getSort()

        for (let i = 0; i < a.length; i++) {
            if (a[i].getAttribute('href') == sort[i]) {
                a[i].setAttribute('class', 'external'); // paint sorted a tags in DOM  
                                                        // by [external] attribute
                console.log(a[i]);

            }
        }
        return a;
    }

    getColor(a);



</script>

设a=document.body.getElementsByTagName('a');
函数getList(list){//从所有标记元素创建数组。
设arr=[];
for(设i=0;i
HTML:

<!DOCTYPE HTML>
<html>

<head>
  <meta charset="utf-8">
<style>
  .external {
    background-color: yellow
  }
</style>

</head>

<body>
<a name="list">list</a>
<ul>
  <li><a href="http://google.com">http://google.com</a></li>
  <li><a href="/tutorial">/tutorial.html</a></li>
  <li><a href="local/path">local/path</a></li>
  <li><a href="ftp://ftp.com/my.zip">ftp://ftp.com/my.zip</a></li>
  <li><a href="http://nodejs.org">http://nodejs.org</a></li>
  <li><a href="http://internal.com/test">http://internal.com/</a></li>
</ul>


</body>

</html>

.外部{
背景颜色:黄色
}


  • 我不能评论你的问题,这正是我真正想做的。同样犹豫不决的是,我对你的问题也不太清楚。 但是代码中很少有问题

    函数getList:您在定义中指定了一个从未使用过的列表参数,我认为最好不要使用它。就我个人而言,我将保留参数,并避免在函数a[i]中使用外部范围变量。。。并确保函数仅在传递适当的变量时才执行其任务

    函数getSort:如果我很好地遵循,那么它只是一个函数,用于构造一个新的链接数组,不包括以?里格斯?然后局部变量排序在做什么?您永远不会返回它,也不会将其用于功能内部的任何内容

    函数getColor:您调用getColor(a),因此请记住,a是通过sort parmater通过引用传递给getColor的。因此,在您的getColor中,sort和a是相同的。在getColor函数中,您一直在比较相同的内容

    有人会说我在这一切上是否错了。 编写函数来完成它们的工作,使用它们自己的参数/参数,避免直接使用任何外部参数。我的建议是这样的

    如果添加一些日志语句,您可以准确地看到发生了什么:

    let a=document.body.getElementsByTagName('a');
    函数getList(list){//从所有标记元素创建数组。
    设arr=[];
    for(设i=0;i
    
    .yellow{
    背景颜色:黄色
    }
    
    

  • 我不完全理解这个问题。问题是只有链接
    ftp://ftp.com/my.zip
    http://internal.com/
    变为黄色,这
    http://google.com
    没有?结果应该是
    ftp://ftp.com/my.zip
    http://google.com
    http://internal.com/
    保持为非黄色?结果:
    -现在必须是黄色的,因为:
    -这很奇怪,我认为问题隐藏在
    getColor
    函数的排序中
    let sort=getSort(getList())后接
    getColor(a)。你没有利用你