变量表达式转换成javascript,而不使用th:inline
Variable expression into javascript without using th:inline
我先搜索了一下,但是我发现了令人困惑的答案,因为我是Thymeleaf的新手,在javascript方面最多是业余的。
我只是想知道如何将变量表达式传递到javascript函数中,有点像JSP:
<a href="#" onclick="javascript:getContactId('${contact.id}');">Button</a>
当然,这在Thymeleaf中失败了,它传递字符串${contact。id}而不是它的值,那么我怎么才能得到变量表达式的值呢?
我想这样做的原因是因为它取决于th:each
迭代的行。
如果除了使用th:inline
没有其他方法,那么考虑到上面的陈述,什么是最好的方法?
这个有效:
th:onclick="'javascript:getContactId(''' + ${contact.id} + ''');'"
感谢百里香叶论坛:http://forum.thymeleaf.org/variable-expression-into-javascript-without-using-th-inline-td4025534.html
在thyymeleaf版本2.1中,我无法获得接受的答案来工作。我确实从Thymeleaf的Twitter帖子中找到了一些指导。而不是使用th:onclick
,您使用th:attr
并指定其中的onclick属性。
th:attr="onclick='javascript:getContactId(''' + ${contact.id} + ''');'"
不能将javascript
变量放入onclick
或其他DOM属性中。onclick
或任何其他DOM属性的值应该是一个常量字符串。
但是,你可以从javascript中动态地修改onclick属性的值,像这样:
yourDomElement.onclick = anyVariable;
您可以这样做:
th:onclick="'javascript:getContactId(' " + ${contact。Id} + ''');'"
一个更通用的方法,如果你需要在JS中不作为事件处理程序参数传递的东西:
th:attr="data-myValueFromThymeleaf=${contact.id}"
任何名称以data-开头的属性都会被所有浏览器忽略。所以它不会影响UI,你可以很容易地在javascript中读取值。
我更喜欢这个,因为它不是理想的把javascript代码放在html(见不显眼的javascript)
我在twitter上问了Thymeleaf项目,他们的答案是:
既可以使用"+"操作符,也可以使用文字替换。例如:<a th:href="|javascript:change('start','${taskId}')|">
更多信息:https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html
我试过了,效果不错~
- inline svg--getElementById在Opera中不起作用
- Appending the innerhtml of <th>
- Fancybox inline html
- data th JS每页只工作一次
- jQuery parent或parents以获取表th标记中的数据属性
- Knockout.js和表:插入<th>将内容转换为匹配<td>
- HTML固定标题-将位置th与td在同一级别上对齐
- 隐藏具有th和colspan的tr
- 选择相关TD的TH行
- 如何将相应的表头 (th) 复制到他们的表单元格 (td)
- PhoneGap Inline PDF
- 具有固定标题以及水平和垂直滚动的表格,不给 td 或 th 提供宽度
- 将 onClick 事件添加到 document.createElement(“th”)
- Use coffeescript/javascript 'throw error' or 'th
- jQuery.css("width") table th
- Javascript Inline Dropdownlist
- 获取 eval 的“窗口”对象,并列出所有变量?Javascript eval inline html.
- 通过 ng 单击更改 TH 颜色
- 更改“th”的背景颜色,更改为紧接着的下一个td
- 变量表达式转换成javascript,而不使用th:inline