jackytom
@jackytom

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

setAttributeが上手くいかない

Q&A

Closed

PHP(HTML)で予約フォームを作成し、総合計金額をjavascriptで表示させようと試みています。

そのため、PHP(HTML)のinputタグに、javascriptのsetAttributeで「value=」を追記しようとしてますが、上手くいきません。

console.logを確認したところ、phpのソースから取得した計算要素は正しく取得できていて、表示したい値の合計金額も出ています。

更に、フォーム画面にて合計計算のボタンをクリックすると、合計金額欄に一瞬正しい金額が表示されます。
当然ですが、デバッグツールも一瞬追記しようとしているように思えます。

何かで初期化されてしまっているのかもしれませんが、原因がわかりませんでした。

原因究明にご協力いただければ幸いです。
該当ソースを添付します。

前述の通り、3つのconsole.logは正しく値が出力されます。

<?php ?>
<script>
	document.addEventListener('DOMContentLoaded', function(){
		document.getElementById('button_commit').addEventListener('click', function() {
			let pService = JSON.parse('<?php echo $priceFir; ?>');
			let pOption = JSON.parse('<?php echo $priceSec; ?>');

			let totalAmount = pService + pOption;

			let input = document.getElementById('total_amount');
			input.setAttribute('value',totalAmount);
			
			console.log(pService);
			console.log(pOption);
			console.log(totalAmount);

		}, false)
	}, false)
</script>
<noscript>
	JavaScriptを実行できません
</noscript>
0

2Answer

フォーム画面にて合計計算のボタンをクリックすると、合計金額欄に一瞬正しい金額が表示されます。

その「ボタン」とは何ですか? <input type="submit" ...> のようにクリックすると form を submit するタイプのものではありませんか? だとすると、submit した後の応答で書き換えられてしまっているとか?

あと、他の方の回答にありますが、

javascriptのsetAttributeで「value=」を追記

も、

document.getElementById('total_amount').value = totalAmount;

に見直した方がよさそうです。

0Like

Comments

  1. @jackytom

    Questioner

    SurferOnWwwさん
    amateさん

    回答ありがとうございます。

    document.getElementById('total_amount').value = totalAmount;
    

    を、

    input.value = totalAmount;
    

    に修正しましたが、結果は同様に一瞬値が表示されますが、消えてしまいました。

    その「ボタン」とは何ですか? のようにクリックすると form を >submit するタイプのものではありませんか?

    はい。
    <button type = "submit"...>で記述してるボタンです。

    submit先は、<form action=""...>では「?」にして、_では特に指定してませんでした。

    試しに、<button type="submit" formaction="reserve.php"(同一ページ)...>としてみましたが、結果は同じでした。

    更に試しに、php側で、<...value="0">と初期値を入れてみましたが、結果は同じでした。

    他に確認ポイントはありますか?

  2. 上の回答に書いた、

    submit した後の応答で書き換えられてしまっている

    の意味が分かりませんか? submit してはいけません。試しに、submit しないタイプのボタンを使ってみてください。

  3. @jackytom

    Questioner

    物分かりが悪くて申し訳ありません。
    承知いたしました。
    type=buttonで対応します。
    ありがとうございました。
    本件、クローズします。

Your answer might help someone💌