• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ajax ボタンが起動しない)

Ajaxボタンが起動しない

このQ&Aのポイント
  • ボタンを押しても関数が呼び出されない問題について解決方法を教えてください。
  • ソースコードを確認したところ、Ajaxボタンの動作に問題があるようです。
  • テスト1回目の実行時にAjaxボタンが正しく起動しない問題が発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

たびたび失礼します。#1、#3です。 debug()の中で使用している「str」という変数がどこにも定義されていないためにエラーになってるはずです。 >function debug(){ >document.getElementById("debug").innerHTML += "</br>" + str; >} これ、「function debug(str)」だと思うんですが。 関数定義時の括弧内に書かれた変数は引数といって、呼び出し時に何らかの変数を受け取った際にその変数に当てはめます。 例では「debug(globalVar)」と呼んでいますから、globalVarが関数に渡され、strに代入された状態になるわけです。 くりかえしになりますが、JavaScriptはブラウザ内で動くプログラムなので、何かあればたいていのことはブラウザが教えてくれます。 もしWindowsXPだからIE9以上が使えないということなら、FirefoxやChromeのようにデバッグがしやすいブラウザを導入したほうがいいです。

maurulu
質問者

お礼

回答ありがとうございました。上手く動作しました。とてもわかりやすかったです。

その他の回答 (3)

回答No.3

こんにちは。#1です。 なるほど。同じ本から引っ張ったんですね。 さて。 ページの画像は確認しましたが、そのコードはは本当にそれだけなんですか? 少なくともHTMLの本体が続くので、記述自体が完全に終わりであることはないと思います。その下にdebugClear()とdebug()の定義の記述は無いんですか? 「Ajax自体に宣言が」というのはなにやらおかしな言い回しですが、AJAXというのは単にJavaScriptを利用したひとつの技術の名前ですから、宣言云々は無関係です。 また、どれ故か知りませんがエラーが出ないということはありません。なぜなら関数未定義のエラーが間違いなく発生するからです。使用しているブラウザが何か知りませんがIEの8以下ならHTMLやJavaScriptの確認には不向きですのでやめるべきです。 最後に、なぜそれが本題になってしまったのか分からないんですが、関数の定義は function xxxxx(){ } です。 または変数に入れるなら var xxxxx = function(){ } です。「関数を変数に入れる」事については、よく分からなかったら今のうちは気にしなくていいと思います。 なんだか私の回答で却って混乱させてしまっている気もしますが、繰り返しておくと、 function debugClear(){ } または var debugClear = functio(){ } という記述が無い限り、「debugClear()」という関数は存在しないので動きません。 その本は持ってないので推測ですが、もっと手前のページで、それを定義して使うセクションがあるのでは……?

maurulu
質問者

お礼

本を読み漁ったら、 function debug(){ document.getElementById("debug").innerHTML += "</br>" + str; } function debugClear(){ document.getElementById("debug").innerHTML += ""; } というソースがありました。 これを用いて以下のソースを作ったのですがやっぱり上手くいきません。 何度もご迷惑をおかけしますが回答お願いします。 <html> <head><title>情報ネットワーク-テスト1</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"> var globalVar = "テスト"; function varTest(){ debugClear(); debug(globalVar); } function debug(){ document.getElementById("debug").innerHTML += "</br>" + str; } function debugClear(){ document.getElementById("debug").innerHTML += ""; } </script> </head> <body> <h1>テスト1回目</h1> <form> <input type="button" value="テスト開始" onclick="varTest();"/><br/> </form> <div id="debug">開始ボタンを押すと問題が出現します</div> </body> </html>

回答No.2

http://okwave.jp/qa/q7424153.html これのコピペ? ブラウザのエラーメッセージ読めば分かるんと思うんですけどね。 「呼び出されない」んじゃなくてdebugClear()もdebug()も定義されてないから動かないだけです。

maurulu
質問者

お礼

回答ありがとうございます。コピペですがサイトからでなく ”10日で覚えるAjax入門教室”のサンプルソースでまねしたんですが...機能しなくて困っていたのです。しかし、本によるとAjax自体に宣言がなくても機能すると書いてあり、関数宣言するとほかの人が見たときにわかりやすいということが書いてありました。それ故、ブラウザーのエラーメッセージもでてきません。  本題ですが、関数を定義するとしたらvarで定義すればいいのでしょうか?

maurulu
質問者

補足

質問に画像を加えました。この画像のソースをまねてソースを書きました。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 debugClearとdebugという関数は作ってありますか? 上記二つを定義すれば呼ばれていることを確認することができます。 もっと簡単に呼ばれているか確認するには function varTest() { alert ( 'varTest()よばれた'); } として確認してください。 *細かいことを言うとこの質問にAjaxは関わっていません。

maurulu
質問者

お礼

回答ありがとうございます。質問に画像を加えました。この画像のサンプルソースを真似てソースを書きました。このとおり、関数を宣言してません。なので、よくわからないのです。

関連するQ&A