![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっています。
相変わらず、Javascriptについて教えてください。
単価:<span id='a1'></span> 円/個
使用量<input type="number" id="x1")>個
計<span id='ax1'></span> 円
や、
単価:<span id='a2'></span> 円/個
使用量<span id='x2'></span> 個
計<span id='ax2'></span> 円
単価:<input type="number" id="a3") 円/個
使用量<span id='x3'></span> 個
計<span id='ax3'></span> 円
で
cal_ax('a1','x1','ax1');
cal_ax('a2','x2','ax2');
cal_ax('a3','x3','ax3');
として使える関数cal_ax(A,X,AX)の作り方教えてください。
<script language="JavaScript">
function D(s) { return document.getElementById(s)};
function cal_ax(A,X,AX) {
var a = D(A).textContent;
var x = D(X).value;
var ax = parseInt(a)*parseInt(x);
D(AX).innerHTML = ax;
}
では、使用量Xがinputの場合しか対応できません。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
変数に型はありませんが、オブジェクト自体にはプロトタイプ継承がありますので、
instanceof 演算子で input 要素であるか判断が出来ます。
function readD(id) {
var e = document.getElementById(id);
if (e === null) return null;
if (e instanceof HTMLInputElement) return e.value;
return e.textContent;
}
参考
https://developer.mozilla.org/ja/docs/Web/JavaSc …
https://developer.mozilla.org/ja/docs/Web/JavaSc …
回答ありがとうございます。
なるほど、instanceof 演算子で型を判定して、分岐するのですね。
かなり素直なわかりやすい解決法、ありがとうございます。
参考にさせていただきます。
No.2
- 回答日時:
> javascriptには変数の型がないので、上手くいくテクニック
単純に空要素だったとき右側が優先される処理です
console.log(0||""||false||null||undefined||1) // 結果:1
valueを持たない場合はundefinedなのでtextContentを参照しにいきます
もしvalueが""の場合もtextContentを参照してしまうので多少場合分けによる工夫が必要
No.1
- 回答日時:
手を抜くとこんな感じ
<script>
function D(s) { return document.getElementById(s)};
function cal_ax(A,X,AX) {
var a = D(A).value||D(A).textContent;
var x = D(X).value||D(X).textContent;;
var ax = parseInt(a)*parseInt(x);
D(AX).innerHTML = ax;
}
window.addEventListener('DOMContentLoaded', function(e){
cal_ax('a1','x1','ax1');
cal_ax('a2','x2','ax2');
cal_ax('a3','x3','ax3');
});
</script>
単価:<span id='a1'>100</span> 円/個
使用量<input type="number" id="x1" value="3">個
計<span id='ax1'>0</span> 円
<hr>
単価:<span id='a2'>150</span> 円/個
使用量<span id='x2'>5</span> 個
計<span id='ax2'>0</span> 円
<hr>
単価:<input type="number" id="a3" value="200">円/個
使用量<span id='x3'>2</span> 個
計<span id='ax3'>0</span> 円
回答ありがとうございます
何と
var a = D(A).value||D(A).textContent;
こんな書き方できるんですね。
javascriptには変数の型がないので、上手くいくテクニックでしょうかね。
確認ですが、|| は、C言語と同じで、
左側のD(A).value が偽の場合のみ 右側のD(A).textContent が評価されて式の値になる
ということですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- HTML・CSS HTMLで特定の文字だけ色を変えたいのですが、指定した色と違う色が反映してしまいます。 下記、「前」 5 2023/06/27 12:08
- HTML・CSS 分数が正常に表示されない。 6 2022/05/09 18:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
【Tabキー】特定の範囲内だけで...
-
テキストボックスがブランクの...
-
ブラウザに応じたJavaScriptの...
-
フレームでページ内検索機能
-
同じIDで定義した要素の配列を...
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
C#テキストボックスの文字を配...
-
window.openでタイトル名の指定
-
functionから別のfunctionを実...
-
クリッカブルマップのリンク部...
-
JAVAスクリプトで指定時間以降...
-
undefinedを表示させない方法は...
-
Vb.netのグローバル変数の宣言...
-
googleスプレッドシートのApps ...
-
シンプルなweb版スタンプラリー...
-
DOM要素を削除しても、イベント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
任意の座標をクリックさせるには
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
Click回数を数え、規定された回...
-
HTML:Tableタグに対し、JavaScr...
-
JavaScriptでオブジェクトを取...
-
onchangeイベントを使ってspan...
-
【Tabキー】特定の範囲内だけで...
-
モーダルダイアログウィンドウ...
-
重複しないくじの作り方がわか...
-
javascript 特定のタグのidの存...
-
配列の大括弧と丸括弧はどう違う?
-
javascriptであるボタンを押す...
-
「nullまたはオブジェクトでは...
-
div要素内の全input要素をdisable
-
onclickを使わずにイベント処理...
-
画像上のクリックした場所が分...
-
RadioButtonListの表示制御
-
javascriptで自動計算フォーム...
おすすめ情報