我正在创建一个内部用户可以单独单击的按钮表。我需要这些按钮才能将背景从白色切换到绿色再到红色,然后再切换回白色......用户是内部用户,我可以指定这只适用于 Chrome。我想坚持使用基本的 HTML5/CSS3 和 Javascript,因为它更具程序性,而且我的团队(我们不是网页开发人员)更有可能维护它。
按钮元素似乎与文本或其他元素的工作方式不同。我已经使用代码来更改其他背景颜色,但是当元素是按钮时它不起作用。
我的 2 个基本阻塞问题是:
您如何在 onClick() 例程中读取当前背景颜色,以便我的代码可以计算下一个颜色?
如何更改 Button 元素的样式或类,以便在退出 onClick() 例程期间或退出时更改背景颜色?
我见过在 CSS 文件中定义 3 种不同颜色样式的示例,如下所示:
.make-background-white { background-color: white}
.make-background-green { background-color: green}
.make-background-red { background-color: red}
当我最初绘制按钮时,我可以使用它们。但我不知道如何在 onClick() 例程中“读取”当前背景颜色,也无法更改颜色。
更多细节
我从数据库中读取以查找按距离排序的商店周围的所有邮政编码。我创建了一个以邮政编码作为文本的按钮表,范围为 40-600 个按钮。背景颜色显示未分配的邮政编码(白色背景)和已分配的邮政编码(绿色背景)。
有时,用户想要单击几个 White 邮政编码来表示他们想要将该代码分配给商店。
我还想要一些帮助按钮,用户可以单击这些按钮自动为半径为 30 或 60 或 90 英里的商店着色/分配邮政编码。
我在幕后有一个大型 Javascript 哈希/关联数组,它使用邮政编码作为键,用于创建按钮、跟踪距离、跟踪分配或未分配的邮政编码等。这很简单. 它的动态改变按钮背景让我失望。
经过三天的黑客攻击后,我确实设法通过使用带有如下回调的 Jquery 来完成某些工作:
$(".btn").click(function() {
if ( $(this).hasClass ('make-background-white') {
$(this).removeClass('make-background-white');
$(this).addClass ('make-background-green');
} else if ( $(this).hasClass('make-background-green') {
// Remove green, add red
} else if () {
// Remove red, add white
}
}
这似乎触发了按钮以使用新背景重新绘制,并通过在“类”属性中存储一个字符串来工作,以便我以后可以读取和操作。这是我在其他更直接的 Javascript 中的回调,其他使用“getElementById()”的 onClick() 例程似乎无法以相同的方式读取或操作“class”属性。
任何在 Javascript 中执行上述操作的帮助将不胜感激。