【问题标题】:How to color table rows according to a specific input dynamically?如何根据特定输入动态为表格行着色?
【发布时间】:2017-12-09 08:09:00
【问题描述】:

我刚刚开始学习 javascript、jquery 和 ajax。

我真的需要帮助了解逻辑或我应该如何解决这个问题:

我有一张可能是每月的“费用”表:

      Type     Cost     Monthly/yearly
      Laundry    2000$     Monthly
      Groceries    300$    Monthly
      Clothes    100$    Monthly

我有一个输入 budget 。我需要的是说用户输入 200$ ,成本大于预算并且每月的行应该用红色着色:

 Type     Cost     Monthly/yearly
  Laundry    2000$     Monthly (colored in red)
  Groceries    300$    Monthly (colored in red)
  Clothes    100$    Monthly

但是用户可以输入另一个 budget ,然后表格中的颜色应该会自动更新。现在他输入1000$

Type     Cost     Monthly/yearly
      Laundry    2000$     Monthly ( only one colored in red)
      Groceries    300$    Monthly 
      Clothes    100$    Monthly

我怎样才能做到这一点?我只需要知道如何明智地处理这个逻辑。我正在使用 Node.Js

【问题讨论】:

  • 我建议您添加到目前为止所做的任何代码或尝试。
  • 再次,我要求逻辑,因为我缺乏任何方法来解决这个问题。我是一名 R 程序员,这对我来说是一个全新的领域
  • 你在哪里生成你的表?在 JS 中还是在 htmll 中?就像您的数据保存在哪里一样。这将决定一个正确的方法
  • 全部是服务器端还是您更愿意拥有客户端逻辑?这也将决定一种可能的方法
  • 您至少可以非常显示相关元素的HTML吗?我们在这里帮助解决您的问题,而不是为您解决问题。

标签: javascript jquery node.js ajax


【解决方案1】:

如果您只向我们发布您的想法,而没有任何实际代码,我们将无法真正帮助您。我只给你和建议:你可以用 javascript 检查你输入框的值,如果它大于/小于 X,通过 Javascript 为它着色(使用“样式”属性)。示例

<input type="text" id="boo" onfocusout="colourbox()">

在你的head标签中,写一些js代码

<script>
function colourbox(){
var boo = document.getElementById("boo");
if(boo.value > 200)
    boo.style="background-color:red";
}
</script>

如果输入框包含大于 200 的值,此代码会将您的输入框变为红色。希望对您有所帮助

【讨论】:

    【解决方案2】:

    我会尝试给你一些非常奇怪的伪代码。希望能帮助到你 我将为您解释客户端和服务器端版本的两种可能方法。还有一些关于您可能使用的注释。

    尝试这两种方法可能最符合您的利益,以后可能会派上用场。


    客户端版本:

    CSS

    创建一个 CSS 类来设置背景和字体颜色的样式,比如说危险,适用于任何一种方法。您还应该在行内设置 td 样式

    HTML

    创建您的输入并为其命名,假设名称是预算 使用所有数据创建表

    JS

    假设您想在输入字段更改时更改颜色 首先,您需要捕获字段输入的更改。可以使用jquery的on()函数

    • 当您从 所有行
      • 获取输入的值
      • 遍历每一行
      • 获取成本单元的数值。使用parseIntparseFloat 获取数值。如果需要删除逗号或 $ 使用replace() 签名
      • 获取文本值 每月/每年
      • 检查您的成本数值是否大于预算以及文本值是否等于每月
      • 如果条件为真add the class 使用 addClass() 对当前行造成危险

    服务器端版本:

    由于您在服务器端工作,我假设您将数据保存在变量或数组中。假设你有一个对象数组,沿着

    var array = [
        {type: 'laundry',cost: 200, repetition: 'monthly'},
        {type: 'food',cost: 100, repetition: 'monthly'},
        ...
    ]
    

    和你的预算

    var budget = 200;
    

    CSS

    创建一个 CSS 类来设置背景和字体颜色的样式,比如说危险,适用于任何一种方法。您还应该在行内设置 td 样式。

    服务器生成的视图

    • 您需要遍历数组的每个元素
    • 在每次迭代中,您将使用以下数据创建一行
    • 如果成本
    • 将类型单元格添加到行中
    • 将成本单元格添加到行中
    • 将重复单元格添加到行中

    【讨论】:

    • 抱歉,这些都是想法。我不会发布任何代码。一旦您@momo12321 尝试生成一些代码,我们将真正能够为您提供帮助
    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2017-06-03
    • 1970-01-01
    • 2012-11-17
    相关资源
    最近更新 更多