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

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

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

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

Q&A

解決済

2回答

1128閲覧

そのjavascriptを5セット〜10セットくらい作りたい

amaryllis

総合スコア179

JavaScript

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

0グッド

0クリップ

投稿2018/09/02 06:38

「リアルタイムにカンマ(金額)を付けたい」の続きの質問です。
出来上がったjavascriptを表題のタイトル通りにしたいです。
つまり、その①↓

html

1 <table> 2 <tr> 3 <th></th> 4 <th>平米数(㎡)</th> 5 <th class="result">坪数</th> 6 <th>坪単価(円/坪)</th> 7 <th class="result">金額(円)</th> 8 </tr> 9 <tr> 10 <td><input type="text" name="se01_a" value=""></td> 11 <td><input type="text" name="se01_b" value="" id="se01_b"></td> 12 <td class="result"><span id="tsubo"></span></td> 13 <td><input type="text" name="se01_c" value="" id="se01_c"></td> 14 <td class="result"><span id="kingaku"></span></td> 15 </tr> 16 <tr> 17 <!-- 上記の同じコード --> 18 </tr> 19202122 </table>

又は、その②

html

1 <table> 2 <tr> 3 <th></th> 4 <th>平米数(㎡)</th> 5 <th class="result">坪数</th> 6 <th>坪単価(円/坪)</th> 7 <th class="result">金額(円)</th> 8 </tr> 9 <tr> 10 <td><input type="text" name="se01_a" value=""></td> 11 <td><input type="text" name="se01_b" value="" id="se01_b"></td> 12 <td class="result"><span id="tsubo"></span></td> 13 <td><input type="text" name="se01_c" value="" id="se01_c"></td> 14 <td class="result"><span id="kingaku"></span></td> 15 </tr> 16 </table> 17 <table> 18 <!-- 上記の同じコード --> 19 </table> 202122

javascriptでは、

javascript

1function price({se01_b, se01_c}) { 2345}


「price」を「price1」、「price2」、「price3」・・・にしたり、
「tsubo」や「kingaku」も「tsubo1」、「tsubo2」、「kingaku1」、「kingaku2」・・・にしたりして、javascriptのコードが膨大になってしまう。
それをコンパクトに出来ますでしょうか?

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

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

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

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

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

m.ts10806

2018/09/02 06:52

リンクURLを貼れるので該当の質問への導線をはってください。でないと省略しすぎコードで、前の質問への導線もなく探す必要が出てくるので回答者側の手間が増えて回答がつきにくくなります。
m.ts10806

2018/09/02 06:59

質問本文に追記してください。質問は編集できますし、このコメント欄はデフォルト非表示なので目につきにくいです。
amaryllis

2018/09/02 07:05

function price({se01_b, se01_c}) { }を5セット〜10セットくらい作りたいことです。同じように作るとinputが全部出てしまうでしょう。だから、「price1」、「price2」、「price3」のように作ると膨大になるからコンパクトに出来ないか?と聞いています。
m.ts10806

2018/09/02 09:11 編集

(2回目)質問本文に追記してください。質問は編集できますし、このコメント欄はデフォルト非表示なので目につきにくいです。
amaryllis

2018/09/02 09:21

修正。htmlのその②の場合は「追記2」に記しているjavascriptのコードで大丈夫でしょうか?→上記のhtmlのその②の場合は「追記2」に記しているjavascriptのコードそのままで大丈夫でしょうか?
m.ts10806

2018/09/02 09:41

質問本文を修正してくださいとお願いしているのですが。
guest

回答2

0

price()がどのように呼び出されているかわかりませんが、
例えば下記のようになっているとして、

html

1<input type="text" name="se01_a" value="" onkeypress="price()">

このようにすると

html

1<input type="text" name="se01_a" value="" onkeypress="price(this)">

js

1function price(element){ 2 console.log(element); 3}

onkeypressで動作したinput自身が取得できます。
そこで

js

1function price(element){ 2 console.log(element.value); 3}

とすると入力値がとれます。

ヒントになれば幸いです。

ミニマムサンプルコード

「左の値と右の値を足した結果をその隣のフィールドに表示」というミニマムサンプルコードです。
幾つフォームのセットが増えても関数は1つで左右与えられる情報の型が違っても(Elementそのものとフィールド名)
関係なく計算ができているのがわかると思います。

※イベント発生度合いから最初のコードで提示したonkeypressではなくonkeyupに変更しています。
単に計算しているだけの機能なのでメソッド名もpriceからcalcに変更しています。
※片方が入力されなかった場合や半角数値ではなかった場合などは考慮していません。本当にミニマム構成です。

これをそのままいきなりやろうとしていることに当てはめようとしないでください。
「関数を1つでやりきるためのヒント・考え方」の1つとして捉えてください。
おそらくこの考え方を理解できないとこの質問でやろうとしていることは実現不可能と思ってください。

html

1<input type="text" name="a1" id="a1" onkeyup="calc(this,'b1','result1')">2<input type="text" name="b1" id="b1" onkeyup="calc(this,'a1','result1')">3<span id="result1"></span> 4<br /> 5<input type="text" name="a2" id="a2" onkeyup="calc(this,'b2','result2')">6<input type="text" name="b2" id="b2" onkeyup="calc(this,'a2','result2')">7<span id="result2"></span> 8<br /> 9<input type="text" name="a3" id="a3" onkeyup="calc(this,'b3','result3')">10<input type="text" name="b3" id="b3" onkeyup="calc(this,'a3','result3')">11<span id="result3"></span>

js

1function calc(calc1,calc2,res){ 2 var ca1 = parseInt(calc1.value); 3 var ca2 = parseInt(document.getElementById(calc2).value); 4 var resField = document.getElementById(res); 5 resField.textContent = ca1+ca2; 6}

「そっくりそのまま使えるコード」をもらっても理解できないままそのコードを以て丸投げ質問している人も多いです。それはコードを提示してくれた人にも失礼ですし、はっきり言うと迷惑です(この質問者さんがそうというわけではないですがそうなる恐れがあります)。
理解できてないなら解決済みにしないようにしてくださいね。

まずは提示された回答のコードをきちんと理解するところから。
すべてのコードは1つ1つ意味がありますし、意味を持たせたコードを組まなければなりません。

投稿2018/09/02 06:58

編集2018/09/02 10:53
m.ts10806

総合スコア80852

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

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

amaryllis

2018/09/02 07:25

回答をありがとうございます。 そのコードをどのようにすれば良いか?ちんぷんかんです。 すみません。 あと、function priceだけではなく、その上の var inputs = document.getElementsByTagName('input'); for (var i=0; i < inputs.length; i ++ ) { inputs[i].addEventListener('input', inputHandler); } function inputHandler(e) { ・ ・ ・ } も5セット〜10セット必要でしょうか?
m.ts10806

2018/09/02 09:44

どこまでわかっていてどこまでわかっていないのかがわかりません。 「変数とは」ということから必要ですか? 関数も同じですよ。何個も同じ処理を別の名前で書くなら関数の意味がないです。集約するためにどうしたらいいのか考えることが”ロジック”となります。 ミニマムサンプルコードを提示するのはやぶさかではありませんが、それをもっても「ちんぷんかんぷん」と言われるてしまう恐れがあるので、本当に「変数とは」「関数とは」からやり直してもらわないといけなくなります。 というのを踏まえて私の回答をどう理解しましたか?10のうち幾つくらいの理解度ですか?いきなり「今やろうとしてることに反映ししよう」と考えていませんか?それは無理な話です。 まずは回答内容でどのような効果が得られるか検証してみてください。コードを見ていても何も理解は進みませんよ。
m.ts10806

2018/09/02 09:48

ひとまず↑で言及した「ミニマムサンプルコード」を後ほど、本当に簡単なものを書きます。それを以て「どうすればいいか」考えてみてください。 ちなみに前の質問でどう作動させたかなどは全く関係のない組み方をします。 「実現方法はひとつではない」ということです。(最適か最良か最速は別として)
m.ts10806

2018/09/02 10:58

考え方は「JavaScriptをその数だけ用意する」のではなく、 「JavaScriptを1つだけで済むようにhtmlを用意する」です。 場合によりIDのつけ方や呼び出し方などを適宜調整する必要があります。
guest

0

自己解決

リアルタイムにカンマ(金額)を付けたいのページにjun68yktさんが回答(2018/09/02 19:59)してくださったので、回答受付を終了します。
みなさん、回答してくださってありがとうございました。

投稿2018/09/02 13:09

amaryllis

総合スコア179

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

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

m.ts10806

2018/09/02 13:14

質問修正依頼を対応しない、他の質問に追記されたからそれで終了って そのうち誰もあなたの質問に回答しなくなりますよ。 わからないことをスルーする癖もやめたほうがいいですね。 丸投げて完成コードだけもらいたいならアウトソーシングされたほうが良いです。
amaryllis

2018/09/02 13:29

私だって、「わからないので、コードを教えてください」と、コード無しで丸投げ質問しないよう、コードを加えて、質問を立てました。 コードは自分なりにやってみて、壁に当たり、解決の糸口が見つからなかった時点で、コードを入れて質問しました。 もちろん、jun68yktさんにこだわって回答してもらうのではないです。 誰だって、回答してもらっていいですよ。 jun68yktさんやmts10806さんが回答してくださったときは、3時間くらい席を離れていたから、22時頃に戻って回答を見てそのコードで動かしてみた時点で、解決になったから、受付を終了しました。
m.ts10806

2018/09/02 13:36 編集

で、そのコードちゃんと理解できたんですよね? 私の回答にもコメント書いてますが、ちゃんと理解したうえで解決としないと回答者に失礼です。 というかすでに解決した質問に追記させてしまってますよね。相手するのは好き好きですが、使い方としてどうだろうと。 コメント見てると「もらったコードが動いたから解決」としているように見受けられます。 「もらったコード動かしましたダメでした。」みたいな。工夫が見えるコメントが一切ないです。 それって「わからないので、コードを教えてください」とどう違いますか? さて、この回答になぜ低評価が複数ついているか理解できますか?
m.ts10806

2018/09/02 13:45

次からで結構なので、質問に「初心者アイコン」つけておいてくださいね。 でないとある程度のヒントで解決可能と判断されるケースが多いです。 質問の編集の仕方もちゃんと検証しておいてください。 この内容の質問連発、解決方法連発されたらさすがに回答する人どんどん減ると思いますよ。
think49

2018/09/02 13:58 編集

To: amaryllisさん amaryllis さんは「回答して、質問者が解決に向かうために必要であろうことを補足要求して、それを何度も繰り返す時間を費やした末に、回答/アドバイスに対して、何の返答もなく、『~さんの回答で解決しました』と質問者が書いた時のmts10806さんの気持ち」を少しでも考えましたか。 あなたがmts10806さんの立場だったらどうですか。質問者が解決した事を心から喜べますか。 私は喜べません。「自分が費やした時間は何だったのか」と落胆します。 私はamaryllisさんを「他人の心情を慮れない不誠実な人」と評価し、低評価に投じました。
terminator

2018/09/02 14:07

所詮クレクレ君。「思考するエンジニア」でないのであれば、amaryllisさんが来るところではありません。
amaryllis

2018/09/03 12:38

mts10806さん、think49さん、terminatorさん、お怒りを受け、申し訳ございませんでした。 これからは、気をつけます。 「初心者アイコン」があることは知りませんでした。すみませんでした。 ↑ 「すみませんでした」だけでは、済むことじゃないことですが、知らないまま、質問してしまい、低評価になってしまった。 質問の編集の仕方が大事ですが、話し下手なので、すみません。 本当にありがとうございました。
m.ts10806

2018/09/03 12:45

そこでまずこの質問から編集してみようとなるのを期待していましたが、終わった(ほぼなかったこと)ことにするのですね。大変残念です。 低評価に対する理由がつくだけでもありがたいことなのに、このコメントだけではどこまで理解してどこまで受け止められたかわからないのが大変残念ですね。 作業依頼をするサイトではないことだけは心にとどめておいてくださいね。自分がそういうつもりがなくても第三者から見るとamaryllisさんのやり方は作業依頼とイコールです。 費用が発生しないのがおかしい内容をどんどん依頼しています。少し離れて自身のやり方を見つめなおすと良いでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問