[解決済み】HTMLボタンでJavaScriptの関数を呼び出す方法
質問
HTMLボタンを使って、JavaScriptの関数を呼び出そうとしています。
以下はそのコードです。
<input type="button" value="Capacity Chart" onclick="CapacityChart();">
しかし、正しく動作していないようです。何か良い方法はないでしょうか?
以下はそのリンクです。 http://projectpath.ideapeoplesite.com/bendel/toolscalculators.html 左下のセクションにある容量タブをクリックします。ボタンは、値が変更されていない場合はアラートを生成し、値を入力した場合はチャートを生成する必要があります。
解決するには?
HTML/DOMでイベントを処理するには、いくつかの方法があります。 本当に正しい方法と間違った方法はありませんが、異なる状況下では異なる方法が有用です。
1:HTMLの中で定義する方法がある。
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: JavascriptでイベントのDOMプロパティに追加する方法があります。
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function () { alert('hello!'); };
3: そして、Javascriptを使ったイベントハンドラへの関数のアタッチメントがあります。
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
2番目と3番目の方法は、どちらもインライン/匿名関数を許可し、要素が文書から解析された後に宣言する必要があります。 最初の方法は、onclick 属性が XHTML の仕様にないため、有効な XHTML ではありません。
1番目と2番目の方法は相互に排他的であり、一方(2番目)を使用すると他方(1番目)が上書きされます。 3番目の方法は、1番目や2番目の方法を使った場合でも、同じイベントハンドラにいくつでも関数を追加することができます。
ほとんどの場合、問題はあなたの
CapacityChart()
関数を使用します。 あなたのリンクを訪問し、スクリプトを実行した後、CapacityChart()関数が実行され、2つのポップアップが開かれます(1つはスクリプトの通りに閉じられます)。 このとき、次のような行があります。
CapacityWindow.document.write(s);
代わりに以下を試してみてください。
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
あなたのコードを見たとき、私はあなたがIE専用に書いているのだと思いました。 他の方がおっしゃっているように、以下の参照を置き換える必要があります。
document.all
で
document.getElementById
. しかし、この後もスクリプトを修正する作業は続くので、クロスブラウザで動作するようにコードを変更する際にミスがあると、さらに混乱する可能性があるので、少なくともIEで最初に動作させることをお勧めします。 IEで動作するようになれば、他のブラウザで動作しているかどうかを、コードを更新しながら簡単に判断できるようになります。
関連
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] テスト
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?
-
[解決済み】TypeError:res.jsonは関数ではありません。