• ベストアンサー

function名の変更はできますか?

はじめまして。 JavaScript初心者です。 onclick時にその中にあるfunction名の変更をしたいのですが、どうしてもできません。 下記のように記述していますが、問題点、やり方など教えてほしいです。 document.name.onclick="function名"; よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

こんな感じで・ onloadで設定していますけど、要は、読込後に実行されるならどこでもいいです。 ---------------------------------------------------- <html> <head> <script type="text/javascript"> function init(){ document.FORM1.aaa.onclick=testScript2; } function testScript2() { alert("testScript2 実行!"); } function testScript() { alert("testScript 実行!"); } </script> </head> <body onload="init()"> <form name="FORM1"> <input type="button" name="aaa" value="aaa" onclick="testScript()"> <input type="button" name="bbb" value="bbb" onclick="testScript()"> </form> </body> </html>

donbraco
質問者

お礼

なるほど、これならいけそうですね。 ありがとうございます。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

あまり動的に関数名までいじってしまうと メンテナンス性が落ちる可能性もあります。 できるできないは他の回答者さんの回答を 適切に判断いただければとは思いますが、 実質受け渡すパラメータを調整して 関数内で分岐した方がひいては作り側の作業軽減に もつながるような気がします。

donbraco
質問者

お礼

ご指摘ありがとうございます。 本来ならそのほうが望ましいのですが、 自分が勉強不足なため効率が悪くなってしまいました。

  • akanekor
  • ベストアンサー率52% (102/194)
回答No.3

>ちなみにこの関数はwinie限定なんでしょうか? >ほかのブラウザ(firefox)では動作しませんでした。 http://www.kawaz.jp/pukiwiki/?JavaScript%A5%E1%A5%E2 の一番下参考 面倒なら、No2さんのやり方で。

donbraco
質問者

お礼

なるほど。 完全に理解するには まだまだ勉強が必要ですね。 ありがとうございました。

  • akanekor
  • ベストアンサー率52% (102/194)
回答No.1

attachEventって関数使わないとだめです。 サンプル <html> <head> <script type="text/javascript"> function testScript2() { alert("www"); } function testScript() { bbb.attachEvent('onclick', testScript2); bbb.value ="uuu"; } </script> </head> <input type="button" name="aaa" value="aaa" onclick="testScript()"> <input type="button" name="bbb" value="bbb" onclick="testScript()"> </html>

donbraco
質問者

お礼

できました! ありがとうございます。 ちなみにこの関数はwinie限定なんでしょうか? ほかのブラウザ(firefox)では動作しませんでした。

関連するQ&A

  • jQueryの $(function(){ });

    jQueryについて基本的な質問をさせてください。 基本的にjQueryは、お約束として $(document).ready(function(){ }); と記述し、その中に実行処理を書いていくと思うのですが loadを待たずに実行させたい時は $(document).ready(function(){ });は記述しなくてもよいのでしょうか? どの本をみてもjQueryのお約束事みたいに $(document).ready(function(){ }); を必ず書くと載っています。 自分でやってみたところ、記述しないでも問題なく動いているのですが、 やっぱり $(document).ready(function(){ }); を記述しないと、何か問題があるのでしょうか? ご存知の方、教えてください。 どうぞ宜しくお願いたします。

  • HTML内記述と外部jsファイルの違い

    JavaScript初心者です。 HTML中のとあるボタンを押したとき、二つのラジオボタン(radio1)の選択を変える処理をJavaScriptで試みています。 ■HTMLのフォーム記述(抜粋) <INPUT type="button" name="radio1" value="変更" onClick="setRadio1()"> ■同一HTML内に記述したJavaScript function setRadio1() { <!-- document.mainform.radio1[0].checked = true; //--> }</script> ↑これは問題なく動作する。 ■外部jsファイルに記述したJavaScript function setRadio1() { document.mainform.radio1[0].checked = true; } ↑ページエラーとなる。 なぜか外部jsファイルのJavaScriptに切り替えると「ページエラー」になってしまいます。 どの辺りが問題なのか見当がつきません。 何か気づきがありましたら、アドバイスをお願いします。 ※ちなみに外部jsファイルに記述してある他のJavaScriptは問題なく動作します。

  • フォームのvalueを変更する方法

    下記はjavaScriptで書いたものですが、javaScriptが有効になっていないと機能しないので perlで同じことをやりたいのですが、フォームのvalueを変更する方法とinnerHTMLの様なボタンをクリックするとテキストを変更する方法が分かりません。 ヒントでも良いので教えていただけませんか? <HTML> <HEAD><SCRIPT language="JavaScript"> <!-- function nextA(){ var data = document.formA.data.value; data++; document.formA.data.value = data; } //--> function nextB(){ var data = document.formB.data.value; data++; document.formB.data.value = data; document.getElementById("print").innerHTML = data; } //--> </SCRIPT> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY> <FORM name="formA"> <input name="data" value="1"> <INPUT type="button" value="足す" onclick="nextA()"> </FORM> <FORM name="formB"> <SPAN id="print">1</SPAN> <INPUT type="button" value="足す" onclick="nextB()"> <INPUT type="hidden" name="data" value="1" > </FORM> </BODY> </HTML>

    • ベストアンサー
    • CGI
  • AタグでFunctionを実行

    xxx.jsというJavaScript1ファイルのyyy()というFunctionを、Aタグで実行させたくて、 <SCRIPT LANGUAGE="JavaScript" SRC="xxx.js"></SCRIPT> <A Href="JavaScript:yyy(document.all.id,document.all.name);">取込</A> と書いたんですが、オブジェクトがありません。というエラーが出てしまいます。 記述が間違っているんでしょうか?

    • ベストアンサー
    • HTML
  • クリック→テキストボックスに追加

    下記は、クリックすると、テキストボックスの文字が入れ代わります。こうでなく、「どれどれそれからどうした」と追加していくようにするにはどうしたらよいでしょうか? <A HREF="javascript:function voi(){};voi()" onClick="document.myform.bun.value='どれどれ'">どれどれ</A><BR> <A HREF="javascript:function voi(){};voi()" onClick="document.myform.bun.value='それから'">それから</A><BR> <A HREF="javascript:function voi(){};voi()" onClick="document.myform.bun.value='どうした'">どうした</A><BR> <FORM name="myform"> <INPUT TYPE="TEXT" NAME="bun" SIZE="50"> </form>

  • nameにハイフンを入れてラジオボタン未選択を判定したい

    Javascriptにてひとつ問題が起こりました。 2つのラジオボタンがあり、どちらも選択せずに選択ボタンを押した時、「どちらかを選択して下さい」とメッセージが出るようにしたいです。 Javascriptは、nameにハイフンが入っていると動作しないようですが、nameにハイフンを入れて動作させなくてはならない状況です。 (nameにハイフンを入れなければ動作するのですが・・・) 私が調べたところ、下記のスクリプトでは、["SELECT-1"]や['SELECT-1']に変更しても動作しませんでした。 下記のスクリプトを別の書き方に変更すれば可能なのかもわかりませんが、詳しくないので書けません。 nameにSELECT-1(途中にハイフンがあり、その後に数字が続きます)を使って可能な記述方法がございましたら、教えて下さい。 下記のような記述ではなくても、nameがSELECT-1で動作するのであれば、変更しても構わないです。 ご存知の方、教えて下さい! どうぞよろしくお願い致します。 <html> <head> <script language="javascript"> <!-- function choice(){ if((document.form1.SELECT-1[0].checked==false)&& (document.form1.SELECT-1[1].checked==false)) alert("どちらかを選択して下さい"); } </script> </head> <body> <form name="form1"> <input type="radio" name="SELECT-1" value="A">A <input type="radio" name="SELECT-1" value="B">B <input type="button" value="選択" onClick="choice()"> </form> </body> </html>

  • onClickイベントの変更方法

    JavaScriptのonclickイベントについてですが、  <form name="fm">  <input type="button" name="bt" value="開始" onclick="Change(1)"> という感じのフォームで、ボタンを押すとChange関数の方で、  if(f == 1) {    document.fm.bt.value="停止";    document.fm.bt.onclick="Change(0)"; //(A) として、onclickイベントの内容を変更したいのですが、 実際には上のような(A)の文では、 エラーは出ませんが、イベントの実行はできません。 onclickイベントの変更方法をご教授下さい。 ちなみに、プログラム自体は別の方法で対処しましたので、 「もっといい方法がある」というご回答は結構です。 それと、もう一つ教えていただきたいのですが、上の例で、  document.writeln(document.fm.bt.onClick); と実行すると"undefined"と表示されますが、  document.writeln(document.fm.bt.onclick); //(onClickのCが小文字) と実行すると"function anonymous() { Change(1) } "と表示されます。 大文字と小文字で、なぜ動作が変わるのでしょうか? ご教授下さい。

  • 印刷の設定について

    はじめまして。ほとんどプログラミングをわかっていない初心者です。 普段はASPで記述しているのですが作成した書類を印刷したいと思っています。 いろいろ検索した結果,下記のような記述で印刷のダイアログを表示させることはできました。 <SCRIPT LANGUAGE="JavaScript"> <!-- function PrintPage(){ if(document.getElementById || document.layers){ window.print(); } } //--> *** *** *** <input type="button" value=" 印 刷 " onClick="javascript:PrintPage()"> 問題は印刷したい書類ごとに縦書き、横書きがあるので ダイアログの中で操作しなくても自動的に任意の方向に指定したいと思います。 あと、可能でしたらA4やB5など用紙サイズ指定もやりたいです。 JavaScriptはほとんどわからないので僕のようなものにもわかるようにお願いします。 質問自体がおかしい!とかそんなもんできるわけないだろ的な意見でもかまいませんのでお願いします

  • greasemonkeyでfunction動かない

    greasemonkeyでスクリプトを作成したいのですが、テスト用に書いたjavascriptをぐれもんに設定したところ、スクリプトが起動しなくなりました。 ※javascript、greasemonkey共に初心者です。 ご指摘いただけると幸いです。 HTML部分は、既存のサイトにつき変更できないため、ぐれもん(JS)にて、追加機能を持たせたい。 ======= 作成したサンプルソース JSで作成した、最下部の入力文字を発送日窓複数に一括反映するためのスクリプトです。 ======= <SCRIPT LANGUAGE="JavaScript"> <!-- window.onload=function(){ var myForm=document.createElement('form'); myForm.setAttribute("name","frm_test2"); var inps=new Object; inps[0]=document.createElement('input'); inps[0].setAttribute("type","text"); inps[0].setAttribute("name","atai"); inps[0].setAttribute("value",""); inps[1]=document.createElement('input'); inps[1].setAttribute("type","button"); inps[1].setAttribute("onClick",'test()'); inps[1].setAttribute("value","実行"); for(var i in inps){ myForm.appendChild(inps[i]); } document.body.appendChild(myForm); } function test(){ num = document.rjForm2.length for (var i=0; i<num; i++){ formname = document.rjForm2[i].name; formname=formname.substring(0,13); if (formname=="shipping_date"){ document.rjForm2[i].value = document.frm_test2.atai.value; } } } //--> </SCRIPT> <body> <form name="rjForm2"> <table> <tr> <td> <input type="text" name="shipping_date_123456-12345678-123456781">発送日 </td> </tr> <tr> <td> <input type="text" name="pay_date_123456-12345678-123456781">振込日 </td> </tr> </table> <table> <tr> <td> <input type="text" name="shipping_date_123456-12345678-123456785">発送日 </td> </tr> <tr> <td> <input type="text" name="pay_date_123456-12345678-123456785">振込日 </td> </tr> </table> </form> </body> ====== 上記JS部分を以下のようにgreasemonkeyに反映した経緯と、結果 ・サイトで見つけたサンプルを元にwindow.onloadの前後は、()を使ったら、この部分は、実行できた。 ・しかし、function test部分は、()を使ってもできず、firebugでは、「test is not defined」と出て、発送日窓に一括登録ができない。 ====== 以下、greasemonkeyに設定したスクリプト ( window.onload=function(){ var myForm=document.createElement('form'); myForm.setAttribute("name","frm_test2"); var inps=new Object; inps[0]=document.createElement('input'); inps[0].setAttribute("type","text"); inps[0].setAttribute("name","atai"); inps[0].setAttribute("value",""); inps[1]=document.createElement('input'); inps[1].setAttribute("type","button"); inps[1].setAttribute("onClick",'test()'); inps[1].setAttribute("value","実行"); for(var i in inps){ myForm.appendChild(inps[i]); } document.body.appendChild(myForm); }()); function test(){ num = document.rjForm2.length for (var i=0; i<num; i++){ formname = document.rjForm2[i].name; formname=formname.substring(0,13); if (formname=="shipping_date"){ document.rjForm2[i].value = document.frm_test2.atai.value; } } } ======= 何卒よろしくお願いいたします。

  • セレクトボックスで選択した内容をテキストボックスへ

    こんにちは、初めて質問させて頂きます。 現在、下記のような形式で、選んだテキストをテキストボックスに追加する仕様を使っています。 これをテキストではなく、プルダウン形式のセレクトボックスで選択できるようにはできないでしょうか? <A HREF="javascript:function voi(){};voi()" onClick="document.myform.comment.value+='鉄 '">鉄</A><BR> <A HREF="javascript:function voi(){};voi()" onClick="document.myform.comment.value+='アルミ '">アルミ</A><BR> <A HREF="javascript:function voi(){};voi()" onClick="document.myform.comment.value+='塩ビ '">塩ビ</A><BR> <FORM name="myform"> <INPUT TYPE="TEXT" NAME="comment" SIZE="50"> </form> お手数ですが、もし宜しければお知恵をお貸し下さい。