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

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

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

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

Q&A

解決済

3回答

1191閲覧

jsのバリューについて

mashumaro0628

総合スコア19

JavaScript

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

0グッド

0クリップ

投稿2017/04/06 05:42

###前提・実現したいこと
バリューを足し引きにしたいです

###発生している問題・エラーメッセージ

バリューがマイナス、プラスされない

###該当のソースコード

<html> <head></head> <body> <script> <?php $page="01"; $currentpage=""; $page=$_POST['page']; if($_POST['change'] == "back"){ $page=$page-1; }else if($_POST['change'] == "next"){ $page=$page+1; } $currentpage="0".$page; ?> function back(){ document.frm.page.value = document.frm.page.value - "1"; } function next(){ document.frm.page.value = document.frm.page.value + "1"; } </script> <img src="<?php echo($currentpage);?>.jpg"><br> <form action="nekonona.php" method="post"> <input value="0" name="page"> <button type="submit" value="back" name="change" onClick="back();">前へ</button> <button type="submit" value="next" name="change" onclick="next();">次へ</button> </form> <?php echo ($currentpage); ?> </body> </html>

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

kei344

2017/04/06 06:24

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
mashumaro0628

2017/04/06 06:25

わかりました。次回から気を付けます
kei344

2017/04/06 06:26

ここは「質問への追記・修正の依頼」です。解決済にしても本文を編集することが出来ますので、よろしくお願いします。
guest

回答3

0

###ポイント1
JavaScript上でdocument.frmという書き方でアクセスしようとしていますが、肝心のformタグのほうにfrmという名前を付け忘れています。

HTML

1<!-- 誤 --> 2<form action="nekonona.php" method="post"> 3<!-- 正 --> 4<form name="frm" action="nekonona.php" method="post">

###ポイント2
足し算引き算をするには、足す(引く)数字、足される(引かれる)数字がともに「整数値」である必要があります。inputタグのvalueは「文字列」なので、足し算引き算をそのままやろうとすると「文字列同士をくっつける(1+1=11)」になってしまいます。

JavaScript

1// 誤 2document.frm.page.value = document.frm.page.value + "1"; 3// 正 4document.frm.page.value = parseInt(document.frm.page.value) + 1;

投稿2017/04/06 06:07

masaya_ohashi

総合スコア9206

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

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

0

ベストアンサー

おかしい点の指摘と修正したコードを載せます。

  • formのname属性を指定する必要があります。
  • buttonのtypeがsubmitだとページが更新されてしまいます。javascriptの処理を行いたいならtype="button"にしましょう。
  • 数値の計算をしたい場合は、文字列"1"ではなく数値1を指定してください。またvalueは文字列なのでNumber()で数値に変更しましょう。

html

1<html> 2<head></head> 3<body> 4<script> 5function back(){ 6 document.frm.page.value = Number(document.frm.page.value) - 1; 7} 8function next(){ 9 document.frm.page.value = Number(document.frm.page.value) + 1; 10} 11</script> 12 13<form name="frm" action="nekonona.php" method="post"> 14 <input value="0" name="page"> 15 <button type="button" value="back" name="change" onClick="back();">前へ</button> 16 <button type="button" value="next" name="change" onclick="next();">次へ</button> 17</form> 18 19</body> 20</html>

投稿2017/04/06 06:01

ku__ra__ge

総合スコア4524

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

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

mashumaro0628

2017/04/06 06:20

ベスアン選んだ後にすみません。typeをボタンにしたらphpにform送信できないんですよね汗
ku__ra__ge

2017/04/06 06:46

そうですよ。 buttonにすると、phpにformの内容が送信されませんから、phpのコードは実行されません。 submitにすると、phpにformの内容を送信した結果でページ内容が更新されますので、javascriptで更新した画面内容は上書きされます。 これはまったく正常な動作です。
guest

0

""は文字になるのでとればいい

投稿2017/04/06 05:55

toutou

総合スコア2050

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問