【问题标题】:How to use arithmetic operator in golang html template如何在golang html模板中使用算术运算符
【发布时间】:2016-05-12 08:54:55
【问题描述】:

我想将我的 html go Temple 中的字段“FileSize”与我的代码中的变量“minsize”(.FileSize

{{ if lt .FileSize *minsize }}
<td style="color:red;">{{.FileSize}}</td>
{{else}}
<td>{{.FileSize}}</td>
{{end}}

【问题讨论】:

  • 不会 {{ if lt .FileSize .minsize }} 工作?
  • 不,只有 'lt .FileSize 9000' 工作,其中 9000 是我设置的 minsize。
  • minsize 是 int 吗?
  • 是的,minsize 和 FileSize 一样是 int。但是 minsize 不像 FileSize 那样是管道的一部分
  • 说实话,我不是一个经验丰富的 Go 用户。我在这里查过:golang.org/pkg/html/template。在示例中,如果我添加一个新的 int 变量,如 Num 并将其传递到数据 {{if lt 5 .Num}} 中,则工作正常。抱歉,我完全错过了一些东西。

标签: go go-templates


【解决方案1】:

问题在于您的 minsize 变量中的 *。如果您尝试取消引用指针,则必须在 go 代码中执行此操作,而不是在模板中。这就是为什么 9000 有效而 *minsize 无效的原因。

【讨论】:

    【解决方案2】:

    Akama Razor 告诉我,您不需要在这里使用 GO 代码。 在这种情况下使用 JS 会好得多。

    祝你好运!

    s = document.getElementsByTagName('td');
    
    for (i = 0; i < s.length; i++) {
      if (parseInt(s[i].innerText) > 123) {
        s[i].style = 'color:red';
      }
    }
    <head lang="en">
      <title>123</title>
    </head>
    
    <body>
      <table>
        <tbody>
          <tr>
            <td>123</td>
            <td>1234</td>
          </tr>
        </tbody>
      </table>
      <script>
        s = document.getElementsByTagName('td');
        for (i = 0; i < s.length; i++) {
          if (parseInt(s[i].innerText) > 123) {
            s[i].color = '#fff';
          }
        }
      </script>
    </body>

    【讨论】:

    • 这并不能真正回答问题,在这种情况下使用 JS 并不是“更好”。这将完全取决于他使用的数据,而问题没有具体说明。
    • 对,事实上我最终找到了使用正则表达式替换模板'tmplhtml = re.ReplaceAllString()'中的字符串“-MINSIZE-”的解决方法
    猜你喜欢
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2020-03-28
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多