• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptでコンストラクタについて)

JavaScriptでコンストラクタについて

このQ&Aのポイント
  • JavaScriptのコンストラクタについて質問です。
  • コンストラクタを使って1ページで複数使用する方法を教えてください。
  • JavaScriptで複数のIDを使いまわす方法について教えてください。

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

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

IEの事を考えるとこうするしかないのか... <script type="text/javascript"> function hoge(doc,parm){  this.c = doc.getElementById(parm.c);  this.y = doc.getElementById(parm.y);  this.m = doc.getElementById(parm.m);  this.d = doc.getElementById(parm.d);  var win = doc.defaultView || window;   if("undefined" !== typeof document.addEventListener)    win.addEventListener("load",this,false);   else if ("undefined" !== typeof document.attachEvent)    win.attachEvent("onload",(function(obj){    return function(){obj.func();};    })(this)); } hoge.prototype.handleEvent = function(event){  if (event.type == "load" && event.target == this.doc)   this.func(); } hoge.prototype.func = function(){  if(this.c && this.y && this.m && this.d){   if(this.c.options[0].selected == true){    this.y.disabled = "disabled";    this.m.disabled = true;    this.d.disabled = true;   }  } }; var fuga_1 = new hoge(document,  {  c:"customer_birthday_c",  y:"customer_birthday_y",  m:"customer_birthday_m",  d:"customer_birthday_d"  } ); </script> 別パターンもきっとあるはずだ。

hunter_999
質問者

補足

ご回答ありがとうございます。 上記のやりかたで上手くいきました。 this.c.onchangeとかイベントを 設定する方法もわかれば教えていただきたい次第です。 よろしくお願いいたします。

その他の回答 (3)

  • aki_mana
  • ベストアンサー率25% (1/4)
回答No.4

「コンストラクタ&使い回し」ってことから、SELECT要素へのアクセスを簡単な記述にしたいと勝手に解釈しました。 もしそうであれば、普通にSELECT要素を包括するクラスを設計すればいいかと思います。 // JSUIselect class. (constructor) function JSUISelect( id ) { this.selectElm = document.getElementById( elementid ); } JSUISelect.prototype = { selected : function() { return this.selectElm.selected == true; }, disable : function() { this.selectElm.disabled = true; } }; 他にもやりたいことがあればメンバ関数を追加の方向で。 (恐らく、OPTION要素を簡単に追加したいなどの要望があるはず) ここでは、質問にあった内容をそのまま実現するコードに置き換えるだけにします。 // omitted addEvent() var c,y,m,d; addEvent(window,"load",function(){ c = new JSUISelect('customer_birthday_c'), y = new JSUISelect('customer_birthday_y'), m = new JSUISelect('customer_birthday_m'), d = new JSUISelect('customer_birthday_d'); if(c.selected()) { y.disable(); m.disable(); d.disable(); } }); ライブラリ依存のフロントエンド開発では一般的じゃないです。 拠って動作確認していませんので悪しからず。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

そのまま、書いてみただけ <script type="text/javascript"> function hoge(doc,parm){  this.c = doc.getElementById(parm.c);  this.y = doc.getElementById(parm.y);  this.m = doc.getElementById(parm.m);  this.d = doc.getElementById(parm.d);  var win = doc.defaultView;   if("undefined" !== typeof doc.addEventListener)    win.addEventListener("load",this.func,false);   else if ("undefined" !== typeof doc.attachEvent)    window.attachEvent("onload",this.func); } hoge.prototype.func = function(){  if(this.c && this.y && this.m && this.d){   if(this.c.options[0].selected == true){    this.y.disabled = true;    this.m.disabled = true;    this.d.disabled = true;   }  } } var fuga_1 = new hoge(document,"load",{  c:"customer_birthday_c",  y:"customer_birthday_y",  m:"customer_birthday_m",  d:"customer_birthday_d" }); </script>

回答No.1

コンストラクタを使って、(という言い方も何かへんですが、とりあえず置いておいて。) 何をしたいのですか? また、何を使い回ししたいのですか?

関連するQ&A