我尝试编写一个小扩展名,用特定字符串更改所有链接,然后将字体颜色设置为红色/黄色/绿色。 我第一次尝试只更改我找到的第一个链接,一切都很好(调试速度更快),现在我删除了一些奇怪的中断语句。
如果我让我的程序搜索所有链接没有任何变化。但是,如果我将它设置为停在一个我知道应该更改的某个字符串,它只会更改最后一个字符串,而不是其他任何字符串。因此,每当我尝试操纵链接时,似乎每次进展都消失了。但是这种重置只发生在处理http请求的线程中。在我通过所有链接的主循环中,我最初将每个字符串设置为红色并且不会发生变化。 有任何想法吗?这是代码:
var links = document.getElementsByTagName("a");
$(document).ready(function() {
"use strict";
var links = document.getElementsByTagName("a");
for(let i=0;i<links.length;i++){
if(links[i].toString().includes("/anime/")) {
//Color red
links[i].innerHTML = "<font color=\"" + red + "\">" + links[i].innerHTML + "</font>";
var searchURL = "http://random.url";
var client = new XMLHttpRequest();
client.onload = function () {
firstRequestHandler(client, i);
};
client.open("GET", proxerSearchURL);
client.send();
}
}
});
function firstRequestHandler(client, index) {
if (client.status == 200 && client.responseText != "")
{
var response = client.responseText;
//Color green
links[index].innerHTML = hrefLink.innerHTML.replace(red, green);
}
}
在这段代码之后,每个链接都是红色的。如果我在&#34; client.send();&#34;之后直接设置了一个break语句。它工作的最后一个环节&#34;是绿色,之前的每个链接都是红色,之后的每个链接都没有变化(显然)。
编辑:尝试使用&#34; let&#34;修复关闭问题。在&#34;严格模式&#34;但它仍然无法奏效。我错过了什么吗?还建立了全球链接,因为我认为它也可能有所帮助?不是...... Javascript很奇怪......