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)代码>。你没有利用你