質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Q&A

解決済

1回答

7686閲覧

thymeleafでJavaScriptのonclickが動作しない

mimi_129

総合スコア63

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

0グッド

0クリップ

投稿2021/03/01 15:58

前提・実現したいこと

onclickを使って値(文字列)が入っているかどうかで分岐させたいです。
trueの場合はnullを判定して、「打刻の状態を「出勤」にしてもよろしいですか?」の狙い通りの文言が出ているのですが、nullにならないonclickを動作させた時にエラーが出てモーダルも作用しません。
script冒頭のalertも鳴っていません。
onclick時に転けているので、引数に問題があると思うのですが。。
原因が分かる方がいらっしゃったらお力を貸してください。

イメージ説明

該当のソースコード

java

1<!doctype html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head th:replace="~{layout/component :: head('タイムカード')}"></head> 4<script> 5function entryCheck(id, workstarttime) { 6 7 alert(workstarttime); 8 9 var resultString = ''; 10 11 if(workstarttime == null) { 12 resultString = '打刻の状態を「出勤」にしてもよろしいですか?'; 13 }else { 14 resultString = '打刻の状態を「退勤」にしてもよろしいですか?'; 15 } 16 17 var result = window.confirm(resultString); 18 19 if(result) { 20 document.location.href = '/timecard/entry?id=' + id; 21 } 22} 23</script> 24<body> 25<th:block th:replace="~{layout/component :: header}"></th:block> 26<div class="container"> 27 <th:block th:replace="~{layout/component :: container_top('タイムカード')}"></th:block> 28 <div class="row justify-content-start"> 29 <table class="table table-striped table-sm"> 30 <tr> 31 <th></th> 32 <th>ID</th> 33 <th>氏名</th> 34 <th>出勤</th> 35 <th>退勤</th> 36 </tr> 37 <tr th:each="entity:${list}"> 38 <td th:if="${entity[2] == null}"><input type="button" value="出勤" th:attr="onclick='entryCheck(' + ${entity[0]} + ', ' + ${entity[2]} + ');'"></td> 39 <td th:if="${entity[2] != null && entity[3] == null}"><input type="button" value="退勤" th:attr="onclick='entryCheck(' + ${entity[0]} + ', ' + ${entity[2]} + ');'"></td> 40 <td th:if="${entity[2] != null && entity[3] != null}"><input type="button" value="打刻済み" disabled></td> 41 <td th:text="${entity[0]}" id="id" th:field="*{id}">id</td> 42 <td th:text="${entity[1]}">name</td> 43 <td th:text="${entity[2]}">age</td> 44 <td th:text="${entity[3]}">age</td> 45 </tr> 46 </table> 47 </div> 48</div> 49<footer th:replace="~{layout/component :: footer}"></footer> 50</body> 51</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JavaScriptの問題です。
文字列はシングルクォーテーションで囲う必要があります。
thタグ内でシングルクォーテーション自体を出力したい場合はエスケープします。

html

1th:value="\'\'" 2 3

投稿2021/03/01 22:16

m.ts10806

総合スコア80888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mimi_129

2021/03/01 22:35

ご回答ありがとうございます。 うーん、こうですかね。。 エラーが出ます。 <input type="button" value="退勤" th:attr="onclick='entryCheck(' + ${entity[0]} + ', ' + ¥'${entity[2]}¥' + ');'"> org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as assignation sequence: "onclick='entryCheck(' + ${entity[0]} + ', ' + ¥'${entity[2]}¥' + ');'" (template: "/timecard/index" - line 39, col 95)
m.ts10806

2021/03/01 22:41

そこじゃないですね。 Javaでダブルクォートを出力したいときと同じです。 th:attr="onclick='entryCheck(' + ${entity[0]} + ', \'' + ${entity[2]} + '\');'"
mimi_129

2021/03/01 22:53

いけました! すいません、そちらの記述で動作しました。 助かりました。 ありがとうございます。
m.ts10806

2021/03/01 23:11

テンプレートエンジンは結局は裏でJavaが構文として働いているのでそのあたりが意識できれば問題なく組めると思います。 あとは静的コンテンツとして組んで動くのを確認してから組み込むのが確実です。「モック」と言います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問