【问题标题】:Change all buttons background-color in javascript在javascript中更改所有按钮的背景颜色
【发布时间】:2018-08-17 00:19:20
【问题描述】:

我这里有一个代码,可以让我更改按钮的颜色。对我来说奇怪的是它只改变了一个按钮而不是所有按钮。但我想让它在同一个站点上改变所有这些。 这是一个带有 HTML 的 codepen 代码:https://codepen.io/akincakiner/pen/EExxMe

/*Set your own color*/
var jscolor;
var defaultColor = (localStorage.getItem("color")) ? localStorage.getItem("color"): "#0078c0";

window.addEventListener("load", startup, false);
function startup() {
  jscolor = document.querySelector(".jscolor");
  if (jscolor) {
    jscolor.value = defaultColor;
    jscolor.addEventListener("input", updateFirst, false);
    jscolor.addEventListener("change", updateAll, false);
    jscolor.select();
  }
  refreshSidebar(defaultColor);
}

function updateFirst(event) {
  refreshSidebar(event.target.value);
}

function refreshSidebar(color) {
  var side = document.querySelector(".themecolor");
  var bgColor = document.querySelector(".bgcolor");
  var text = document.querySelector(".onlyTextColor");
  if (side, bgColor, text) {
    side.style.backgroundColor = color;
    bgColor.style.backgroundColor = color;
    text.style.color = color;
  }
}

function updateAll(event) {
  localStorage.setItem('color', event.target.value);
  $(".themecolor, .bgcolor, .onlyTextColor").each(function(index, element){
    if($(element).hasClass("onlyTextColor")){
      $(element).css('color',event.target.value)
    }
    else{
      $(element).css('background-color', event.target.value);
    }
  });
}

【问题讨论】:

  • 没有 cmets 或任何描述。有人怎么知道哪个函数在做什么
  • 哎呀,你是对的!我会编辑它。
  • 另外如果能放对应的html就好了
  • 希望对您有所帮助:codepen.io/akincakiner/pen/EExxMe
  • 添加 jQuery 库后似乎对我有用。你确定你包含它吗?

标签: javascript jquery html button color-picker


【解决方案1】:

如果您使用 jQuery,只需使用 jQuery 编写 - 如果可能,请不要与原生 JS 结合使用。否则你会混淆你对 jQuery 的学习。

演示:http://jsbin.com/zurebutugi/edit?html,js,output

$(function(){
    var defaultColor = (localStorage.getItem("color")) ? localStorage.getItem("color") : "#0078c0";

    function chColor(color){
      $(".themecolor, .bgcolor").css("background-color", color);
      $(".onlyTextColor").css("color", color);
      localStorage.setItem("color", color);
    }
  
    chColor(defaultColor);
  
    $("#theming-color").change(function(){
      chColor($(this).val());
    })
    .val(defaultColor)
    .css("background-color", defaultColor);

    
});

【讨论】:

  • 好的,但这有一点问题。这确实适用于页面本身。但不在其他页面上。就像我想让所有页面上的按钮都是红色的
  • localstorage 也必须在同一个域中工作。打开example1 然后改变颜色。之后打开example2,您会注意到第二页中的颜色是否与您之前选择的颜色相同
  • 是的,但我明白为什么会这样。打开第一个站点。改变颜色。在第二面:删除行: 现在你会看到颜色没有改变。这意味着您所在的网站需要具有 id:theming-color
  • 如果你在某处随机添加 id="theming-color" 那么所有的颜色都会改变
【解决方案2】:

如果没有页面的 html 部分,我们只能猜测发生了什么。但我认为问题出在这个 html 部分。

因为如果我将您的代码放入测试中,其中 html 部分看起来像这样,它就会像预期的那样工作。

function updateAll() {
  //localStorage.setItem('color', event.target.value);
  $(".somebuttons, .bgcolor, .onlyTextColor").each(function(index, element){
    if($(element).hasClass("onlyTextColor")){
      $(element).css('color','red')
    }
    else{
      $(element).css('background-color', 'red');
    }
  });
}

$('#colorMyButtons').on('click', updateAll);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="colorMyButtons">color my buttons</button>
<br><br>
<button id="btn01" class="somebuttons">btn01</button><br>
<button id="btn02" class="somebuttons">btn02</button><br>
<button id="btn03" class="bgcolor">btn03</button><br>
<button id="btn04" class="bgcolor">btn04</button><br>
<button id="btn05" class="onlyTextColor">btn05</button><br>
<button id="btn06" class="onlyTextColor">btn06</button><br>

【讨论】:

  • 当您尝试此操作时,我可能添加了更多代码。不过我很感激。我有一个 codepen 链接,我的情况是:codepen.io/akincakiner/pen/EExxMe 我会试试你现在在做什么
  • 在我添加库时在 codepen 中它可以工作。但是在我的 html 页面中它根本就没有,这很奇怪
猜你喜欢
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 2021-02-15
  • 2020-03-09
  • 2021-06-22
  • 2015-04-03
相关资源
最近更新 更多