• 締切済み

classNameにメゾットを追加したい

classNameにaddメゾットを追加したいのですがエラーが出てしまいます。 Element.className.prototype.add = function(className) { … }; としたところ、「Element.className has no properties」となってしまいます。 どうしたら、classNameにメゾットを追加できるのでしょうか?

みんなの回答

  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

**** has no properties のエラーは****がNullかUndefinedであるパターンが多いですね。 当方はCSSを弄るときとかtypoしてよくハマります。 このエラーが出たらElement.classNameがちゃんと初期化されているか 確認すると良いですよ。

noname#108740
質問者

お礼

いろいろ調べたところ、無理っぽかったのであきらめます。 回答ありがとうございました。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.3

ええと それじゃこうだと? Element.className.prototype = { add : function (className) {} }; というか Element.classNmae自体は存在するの? Elementしか無くていきなり作るのはできないけどそこは大丈夫?

回答No.2

<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> .style1{background-color:red;} .style2{color:blue;} .style3{} </style> <script type="text/javascript"> // DOCTYPE宣言とかが無茶苦茶に見えるが,これがHTML 5の正式なDOCTYPE宣言だから // http://www.w3.org/html/wg/html5/#the-doctype //なんでそんなもの使おうとしたかというと,Interface ElementのclassListプロパティを使えないかなーと企んだから。 //http://www.w3.org/html/wg/html5/#htmlelement //結果はMinefield,Opera 9.5,Safari 3.0.4で全滅。IEは期待できないと判断して未検証。 function body_Onload(element1){ //俺はEcmascriptとか詳しくないから質問者さんの記述が正しいか判断する能力がない。 //以下のような記述では駄目なのだろうか? //ただし,その性質上,全ての文字列に対し,関数が付与されるため,使いにくいと思う。 String.prototype.add = function(className) { alert(className);}; } function paragraph_clicked(element1){ document.getElementById(element1).className.add("nyan"); } //リゾットやリゾートじゃないんだからメゾットとは言わない。俺も昔言ってたけど。正しくはmethod(メソッド)ね。 </script> </head> <body onload="body_Onload();"> <p id="uga" onclick="paragraph_clicked(this.id);">ほげ</p> </body> </html>

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

Element.className.add = function(className) { … }; こうじゃなく?

noname#108740
質問者

補足

いえ、それでもエラーになってしまいます。 Element.className.add Element.prototype.className.add Element.className.prototype.add Element.prototype.className.prototype.add などいろいろやってみてるのですがどれもエラーになってしまいます。

関連するQ&A