![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
利用時間の入力欄に数字を入力すると請求額の欄に請求額を表示するWEBページを書いてみましたが動きません。
やりたい事は、入力欄に"5"が入力されると
x="5" a="10" なので 文字列 "10*5"を Function()で評価して文字列"50"を作ってそれをaxに代入して、表示 ”請求額 50 円"にする
ということです。
<p>
利用時間<input id="x" onclick="culc1()">分 単価<input value="10" id="a">円/分 請求額<input id="ax">円</p>
<script language="javascript" type="text/javascript">
var ax = document.getElementById("ax");
function calc1() {
ax.value = new Function(a + "*" + x)();
}
</script>
No.2ベストアンサー
- 回答日時:
No1です
>(改行されてしまい1行に表示されない点を除いて)
表示レイアウトに関することなので、CSSの指定を外せば1行表示になります。
>C言語のような感じで書き直すこと出来ませんか?
>~~の文字列を読み書きできる関数があれば、~~
申し訳ありませんが、当方はC言語の知識がありません。
文脈から推測して、getter、setter的なものがあれば良いのかと思い、それを定義して利用する形式にしてみました。
とは言っても、イベントの取り扱いなどは変わりませんので、基本的な構成は変わりません。
わかりにくいとのご指摘でしたので、匿名関数のネストは避けるようにしました。
また、今回は、省略形のアロー関数式の形式で記述してあります。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
</head>
<body>
<p>
<label>利用時間<input type="number" id="x" />分</label>
<label>単 価<input type="number" value="10" id="a" readonly />円/分</label>
<label>請求額<input type="number" id="ax" readonly />円</label>
</p>
<script type="text/javascript">
let D = {
get:(s)=>{ let v = D.elm(s).value; return v==""?0:v * 1; },
set:(s, v)=>{ D.elm(s).value = v; },
elm:(s)=> document.getElementById(s)
}
let calc = ()=>{ D.set("ax", D.get("x") * D.get("a")); }
D.elm("x").addEventListener("change", calc );
</script>
</body>
</html>
再度の回答ありがとうございます
改行されずに1行になりました!
>わかりにくいとのご指摘でしたので、匿名関数のネストは避けるようにしました。
>また、今回は、省略形のアロー関数式の形式で記述してあります。
ありがとうございます。
読みましたが、やはり難しいですね。
アロー関数式も、混乱してきて、ギブアップです。
function D(s) {
function calc() {
でも良い気がしますが、慣れでしょうかね。C言語に馴染んだ私にとっては、混乱を招く記法の気がしてならないです。
var でなく let に変更も悩みました。別に var でも問題ない気が・・・
で回答いただきましたプログラムを参考に、試行錯誤した結果、2つの関数を定義することで解決しました。
<script type="text/javascript">
function D(s) { return document.getElementById(s)};
function calc(){ D("ax").value = D("x").value * D("a").value; }
D("x").addEventListener("change", calc);
</script>
「D("ax").value 」を、「代入、読み出しができる変数 ax」 として扱えば、
C言語のようなプログラムが可能になるということのようです。
No.1
- 回答日時:
こんにちは
全体がわかりませんが、ひとまず、ご質問のような内容の一例です。
入力可能なのは、「利用時間」のみと解釈しました。
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style type="text/css">
label{ display:block; }
</style>
<script type="text/javascript">
window.addEventListener("DOMContentLoaded", function(){
var D = function(s){return document.getElementById(s)};
D("x").addEventListener("change", function(){
D("ax").value = this.value * D("a").value;
});
});
</script>
</head>
<body>
<p>
<label>利用時間<input type="number" id="x" />分</label>
<label>単 価<input type="number" value="10" id="a" readonly />円/分</label>
<label>請求額<input type="number" id="ax" readonly />円</label>
</p>
</body>
</html>
回答ありがとうございます
>全体がわかりませんが、ひとまず、ご質問のような内容の一例です。
そうです!
(改行されてしまい1行に表示されない点を除いて)希望した動作になること確認出来ました。助かります。
でも・・
function(){ の中に function(){があり、プログラムが難しくて処理内容がよく理解出来ません(悲)。
もし可能ならば、C言語のような感じで書き直すこと出来ませんか?
変数a,x,axに<input id="a" <input id="x" <input id="ax" の文字列を読み書きできる関数があれば、後はC言語と同じようにプログラミングできるのですが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLファイル同士での値渡し
-
テキストエリアに履歴を残したい
-
jQueryのdatepickerの日付が選...
-
改行コード変換しても、引数の...
-
どちらかひとつのテキストボッ...
-
大文字か小文字かを判断する方法
-
tabindexの取得
-
ページ間で変数を保持したい
-
return trueとreturn falseの用...
-
value内に変数を入れたい
-
プルダウン 項目が多いので先頭...
-
【jQuery】input nameの文字列...
-
フォームが空欄の時にフォーム...
-
tableの任意行にfocusをあてる
-
select要素のvalueを配列で取得...
-
同じ名前のセレクトがある場合...
-
onClick="this.form.submit
-
onclickで2個指定するには?
-
ボタンを押すとテキストボック...
-
onchangeイベントを強制的に発...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TextBoxに半角数字以外を入れた...
-
ページ間で変数を保持したい
-
HTMLファイル同士での値渡し
-
tabindexの取得
-
プルダウンで選択された値を別...
-
マイナスなら赤字で表示したい...
-
フォームの内容でリンク先URLの...
-
テキストエリアに履歴を残したい
-
テキストボックスに入力した色...
-
イベント発生順序
-
どちらかひとつのテキストボッ...
-
HTMLとJavaScriptで作った表示...
-
VBSからjavascript
-
GetElementByIdがうまく取得で...
-
大文字か小文字かを判断する方法
-
JSPでonChangeを強制発行するに...
-
VBScriptでpingを実行(ブラウザ...
-
javascriptのちょっとした動作...
-
VBscriptの配列変数をJavascrip...
-
画像の表示非表示について質問です
おすすめ情報