
利用時間の入力欄に数字を入力すると請求額の欄に請求額を表示する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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンで選択された値を別...
-
子ウィンドウを閉じるとき、親...
-
VBScriptでpingを実行(ブラウザ...
-
現在時刻を表示させたい!
-
<input>の選択肢をプルダウンメ...
-
Selectボックスの幅を自動で広...
-
javaScriptの変数をJavaの変数...
-
JavaScriptのfileオブジェクト...
-
<JavaScript>tableタグを入力不...
-
ASP.NETでNAME属性を固定にしたい
-
RegularExpressionValidatorの...
-
クリックされた罫表セルの行番...
-
同じ名前のセレクトがある場合...
-
onchangeイベントを強制的に発...
-
二次元配列に数字をランダムに...
-
sessionの値でボタンを活性・非...
-
JQueryで2つのテキストフィー...
-
cookie使用時にundefinedと表示...
-
doPostBack 関数について
-
【FORM】 リンク文字で submit...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TextBoxに半角数字以外を入れた...
-
【Javascript】(テキストボッ...
-
tabindexの取得
-
jQueryのdatepickerの日付が選...
-
IF文でタグの値を確認する
-
マイナスなら赤字で表示したい...
-
javascriptのちょっとした動作...
-
現在時刻を表示させたい!
-
Javascript キー入力より、フォ...
-
JavaScriptで作ったアプリが正...
-
ページ間で変数を保持したい
-
mouseover 時の連続処理につき...
-
表示したいだけなんですけど…
-
ラジオボタンによる表示、非表...
-
テキストエリアに履歴を残したい
-
クリック→フォーカスのある場所...
-
HTMLファイル同士での値渡し
-
どちらかひとつのテキストボッ...
-
開いたサブウインドウから値を...
-
AjaxZip3.zip2addr IE8でエラー
おすすめ情報