用于更改表单边框颜色的Javascript不起作用?

用于更改表单边框颜色的Javascript不起作用?,javascript,html,css,Javascript,Html,Css,正在尝试设置窗体边框颜色的动画,但似乎没有运行。我希望在页面加载后,边框颜色在没有任何用户交互的情况下自动更改 window.onload(function colormagic() { //alert("OK1") var blueborder = document.getElementById("form1") var colorarray = new array() colorarray[0] = "blue" colorarray[1] = "green" co

正在尝试设置窗体边框颜色的动画,但似乎没有运行。我希望在页面加载后,边框颜色在没有任何用户交互的情况下自动更改

window.onload(function colormagic() {
  //alert("OK1")
  var blueborder = document.getElementById("form1")
  var colorarray = new array()
  colorarray[0] =  "blue"
  colorarray[1] = "green"
  colorarray[2] = "yellow"
  colorarray[3] =  "blue"
  colorarray[4] =  "green"
  colorarray[5] = "yellow"
  //alert("OK2")
  for (i = 0; i < elements.length; i++) {
    blueborder.style.borderColor=colorarray[i];
    //alert("OK3")
  }
})
window.onload(函数colormagic(){
//警报(“OK1”)
var blueorder=document.getElementById(“form1”)
var colorarray=新数组()
colorarray[0]=“蓝色”
colorarray[1]=“绿色”
colorarray[2]=“黄色”
colorarray[3]=“蓝色”
colorarray[4]=“绿色”
colorarray[5]=“黄色”
//警报(“OK2”)
对于(i=0;i

所以我尝试添加警报来调试它。我只收到了第一条警报声明。

像这样试试,效果很好

演示

window.onload = function colormagic() {
            var blueborder = document.getElementById("form1");
            var colorarray = new Array();
            colorarray[0] =  "blue"
            colorarray[1] = "green"
            colorarray[2] = "yellow"
            colorarray[3] =  "blue"
            colorarray[4] =  "green"
            colorarray[5] = "yellow"

            for (i = 0; i < colorarray.length; i++) {
                blueborder.style.borderColor = colorarray[i];
            }                 
}
window.onload=函数colormagic(){
var blueorder=document.getElementById(“form1”);
var colorarray=新数组();
colorarray[0]=“蓝色”
colorarray[1]=“绿色”
colorarray[2]=“黄色”
colorarray[3]=“蓝色”
colorarray[4]=“绿色”
colorarray[5]=“黄色”
对于(i=0;i
不确定你想用它来完成什么,它看起来不太友好,但也许这已经接近你想要的了。当然,您可以根据自己的喜好设置超时间隔

var form = document.getElementById('form1');

function colormagic() {    
    var colorarray = ['blue', 'green', 'yellow'];
    var len = colorarray.length;
    var index = (Math.floor(Math.random() * len) + 1) - 1;

    form.style.borderColor = colorarray[index];

    setTimeout(colormagic, 100);
}

window.onload = colormagic;
一些改进:

  • 没有必要在每次循环时查询DOM,因此第一行将从循环中删除
  • style.borderColor不是一个函数
  • 当您只需执行
    var arr=[colors,go,in,like,this]操作时,您无需使用
    new array()
    创建数组并分配单个索引

这是修复此问题的完整html文件,但速度太快。您知道如何保持其运行吗?这是完整的html文件基本上,计时器是不准确的。使用
setInterval
将继续以指定的间隔排队等待更多的函数调用,即使事情开始变慢,计时器变得更加“关闭”
setTimeout
只会在第一个调用已经触发后,对其自身的下一个函数调用进行排队。因此,如果计时开始偏离您指定的超时,它最多只能有1个延迟函数调用排队,因为它等待调用本身。这个解释可能会让人困惑,所以这篇文章可能会帮助我做正确的事情。谢谢