【发布时间】:2013-06-26 20:15:51
【问题描述】:
我正在创建一个内部用户可以单独单击的按钮表。我需要这些按钮才能将背景从白色切换到绿色再到红色,然后再切换回白色......用户是内部用户,我可以指定这只适用于 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 个按钮。背景颜色显示未分配的邮政编码(白色背景)和已分配的邮政编码(绿色背景)。
有时用户想要点击几个白色邮政编码来表示他们想要将该代码分配给商店。
我还想要一些帮助按钮,用户可以单击这些按钮自动为半径为 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 中执行上述操作,我们将不胜感激。
【问题讨论】:
-
你能详细说明一下问题到底是什么吗?您编写的代码会改变按钮的颜色。我整理了一个小演示,展示了您编写的内容并通过单击另一个按钮来更改按钮的颜色。 jsfiddle.net/CWjWY/1 顺便说一句,您的代码在
if语句的末尾缺少)。
标签: javascript html css