【问题标题】:Javascript - Simplify a loop and a functionJavascript - 简化循环和函数
【发布时间】:2020-03-20 20:50:52
【问题描述】:

大家好,我使用 StackOverflow 已经有一段时间了,总能通过搜索框找到正确的答案,但这次我不能!这就是为什么我请求你的帮助。 我确信解决方案很简单,但我已经做了几次测试,我可以解决我的问题。

如果图像无法加载,我想制作它,更改与该图像相关的文本并将该文本设为红色 这已经奏效了,但穴居人风格,这就是为什么我需要你的帮助

document.getElementById("0").onerror = function() {Fu0()};
document.getElementById("1").onerror = function() {Fu1()};
document.getElementById("2").onerror = function() {Fu2()};
function Fu0() {    
    document.getElementById("0").style.display = "none";
    var x = document.getElementById("T0");
    x.innerHTML = "ERROR";
    x.style.color = "red";
    x.style.fontWeight = "bolder"
    x.style.backgroundColor="800000";  
    };  
function Fu1() {    
    document.getElementById("1").style.display = "none";
    var x = document.getElementById("T1");
    x.innerHTML = "ERROR";
    x.style.color = "red";
    x.style.fontWeight = "bolder"
    x.style.backgroundColor="800000";  
    };
function Fu2() {    
    document.getElementById("2").style.display = "none";
    var x = document.getElementById("T2");
    x.innerHTML = "ERROR";
    x.style.color = "red";
    x.style.fontWeight = "bolder"
    x.style.backgroundColor="800000";  
    };

我的 HTML 中有超过 20 次这样的内容,这意味着行数非常多 我正在考虑使用(i)循环运行 但我无法让它发挥作用。

我已经尝试过这个和一些变化,但都没有成功。

for (i = 0; i < 26; i++) {
document.getElementById(i).onerror = function() {Fu()};
}
function Fu() { 
    document.getElementById(i).style.display = "none";
    var x = document.getElementById("T"+i);
    x.innerHTML = "ERROR";
    x.style.color = "red";
    x.style.fontWeight = "bolder"
    x.style.backgroundColor="800000";  
    };

如果你能帮助我,我将不胜感激, 提前致谢

【问题讨论】:

  • 老实说,如果您没有其他框架,这是使用 jquery 的好时机。您可以使用类或数据选择器,并一次更改任意数量的可见元素上的所有这些道具。
  • 这能回答你的问题吗? Detect when an image fails to load in Javascript
  • 您应该考虑使用 CSS 样式表,这样您就不会在 style 上设置太多属性;这可能很慢。此外,虽然 HTML5 中的 ID 规则已经放宽,但使用全数字 ID 仍然不是向后兼容的好主意。
  • 感谢@Trevor 我知道它的旧,但我不是这方面的专家,这就是我从学院记得的
  • @ControlAltDel 它没有,我希望它围绕几个选项进行迭代,但谢谢!

标签: javascript html loops


【解决方案1】:
for (let i = 0; i < 26; i++) {
document.getElementById(i).onerror = function() {Fu(i)};
}
function Fu(num) { 
    document.getElementById(num).style.display = "none";
    var x = document.getElementById("T"+ num);
    x.innerHTML = "ERROR";
    x.style.color = "red";
    x.style.fontWeight = "bolder"
    x.style.backgroundColor="800000";  
    };

【讨论】:

  • 天哪!它是如此简单,以至于它的美丽,让人感觉比以前更笨!真的谢谢!
猜你喜欢
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 2021-03-01
  • 2017-06-02
  • 1970-01-01
相关资源
最近更新 更多