Javascript不会持久地改变html背景颜色

Jua*_*n94 2 html javascript css

每一个人.我希望你能在这里帮助我,我试图通过点击按钮来改变我的文档正文部分的颜色.

有三个按钮,每个按钮设置一个背景颜色.问题是:当我点击其中一个时,它会将背景颜色改变一秒钟,然后它会返回到原来设置的颜色,这是我的代码示例:

<html>
<head>
  <script type="text/javascript">
    function colorish(my_color){
      if (my_color === 'gray'){
        document.body.style.background = '#CCCCCC';
      }else if (my_color === 'orange'){
        document.body.style.background = '#FF9900';
      }else if (my_color === 'blue'){
        document.body.style.background = '#C1DAD6';
      } else {
        alert('on else');
      }
    }
  </script>
</head>

<body style="background: orange;">
  <form>
    <button name="back_color" onclick="colorish('gray')">Gy</button>
    <button name="back_color" onclick="colorish('orange')">Oe</button>
    <button name="back_color" onclick="colorish('blue')">Be</button>
  </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

该脚本位于我的环境中的单独文件中,但它完全相同.

如果在脚本中我包括:

onload = selector();

function selector(){
  var buttons = document.getElementsByName('back_color');

  buttons[0].onclick = colorish('gray');
  buttons[1].onclick = colorish('orange');
  buttons[2].onclick = colorish('blue');
}
Run Code Online (Sandbox Code Playgroud)

它只输入每个按钮[].on ...赋值并将背景设置保留为最后一个赋值,在这种情况下为蓝色.

我不是专家,所以也许我对js的html缺少一些东西.

esq*_*qew 5

如果没有type为你的按钮声明,他们表现得就像他们一样type="submit".由于元素上没有配置action参数<form>,action因此它们与访问它们的页面相同.这并不是说背景只出现了一瞬间然后又恢复到正常颜色,页面正在重新加载并默认返回到那种颜色,就像你刚刚加载它一样.

要停止此行为,请为每个按钮指定一个type="button":

<button type="button" name="back_color" onclick="colorish('gray')">Gy</button>
<button type="button" name="back_color" onclick="colorish('orange')">Oe</button>
<button type="button" name="back_color" onclick="colorish('blue')">Be</button>
Run Code Online (Sandbox Code Playgroud)

作为旁注,如果您不使用按钮作为表单的一部分来提交数据,则不需要相应的<form>节点 - 它们将自行运行并且符合标准.