作者: davi
日時: 2009/2/15(06:23)
Bruce.さん  <  こん??は でび です

On Sun, 15 Feb 2009 04:57:20 +0900
"Bruce." <kbk@...> wrote:

> setAttribute て引数を二個取りません?
> でびさんのスクリプトでは一個しか渡してませんから、
> not enough args (引数が足りないんじゃボケッ) エラーと。

んと、『釈迦に説法』という言葉を、まさにこのことか…と痛感しています。

以下、先生が生徒に「どのように考えてこのように解いたのか、説明してごらん。」
という指示を受けたのに答える感じで、書き出しますね。

まず、

> >     var OTRMW = '"width","' + RMW + '"' ;

によって、文字列は結局、「"width","900"」というカタマリになります。
これはチャンとカタマリになっているのをalertで確認取りました。

で、こいつは OTRMWに代入され、等価になってるはずなので、

> >     objectTag.setAttribute(OTRMW);

は結局、

例:     objectTag.setAttribute("width","800");

のようになって、2個の引数が渡っている扱いになる「見込み」
(そうなるはず。そうなってほしい。)わけなんですね。

> >     var OTRMH = '"height","' + RMH + '"' ;
> >     objectTag.setAttribute(OTRMH);

の記述も同様に

例:     objectTag.setAttribute("height","600");

となってほしいわけです。でも、そうなってくれない。

---------------

> Javaには variable interpolation はなかったはずですが・・・

え〜と、JavaScriptってば、ユーザ定義変数の内部展開はできないよ、と?

まさか、私は今、この辺の話題に首突っ込んでいるんですか?
          ↓
http://d.hatena.ne.jp/sawat/20070219/interpolate
http://hail2u.net/blog/coding/emulate_regexp_e_option_in_js.html
http://tdiary.ishinao.net/20050329.html#p01
http://la.ma.la/blog/diary_200512291411.htm
http://blog.livedoor.jp/dankogai/archives/50665223.html
http://blog.livedoor.jp/dankogai/archives/50766443.html

いずれのコードも、リプレースと正規表現を組み合わせて
何かやっているらしいことまではわかるんですが、
詳細の所、何をどういじっているんだか解読不能なんですが…。

# 特に弾さんのは、ご本人も「強力」とお書きなだけあって
# 複雑すぎて…。

> not enough args (引数が足りないんじゃボケッ) エラーと。

って、まさか、defineという非情な文字列が一個渡されている
だけかも、とか?

> 何でそっち(variable interpolation)の方向に行くのか不思議なんですが。

setAttributeは仰るように引数が2個必要。
しかし、その引数は ""で括って,で分割しないとイカン。

つまり、「"」という文字列や「,」という文字列も
setAttribute(★); の、★の部分に入れたいわけです。

ちうことは、「"width","900"」という文字列の場合、
「"」+「width」+「"」+「,」+「"」+「900」+「"」と、計7個を
連ねて入れてやれば正解。

> 検証って何を検証しようとしているのかもわかりません。

で、古籏コードの場合は、配列を順繰りに送っているだけなので
「"」という文字列や「,」という文字列は送信していない、と。
それを調べたつもりです。

---------------
で、せんせ〜、どーしたら解決できますか?

# やべー。朝だ。今朝は地域の災害対応訓練日だったはず…。
# 暇を持てあましたまだ元気な定年退職組が自治会に増え
# だした最近、休日に余計な行事が増える傾向にある気が…。
# とりあえず、寝まつ。

でび  http://davi.txt-nifty.com/1984/