作者: ねこ丸
日時: 2009/2/15(08:47)
  ねこ丸です。

davi writes:

> >エラー: uncaught exception: [Exception... "Not enough arguments"
> > nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)"
> > location: "JS frame ::file:///〜/hoge.html ::
> >SetWidthHeightSize :: line 123"  data: no]
> 
> とか意味不明な無愛想なエラーを返してきます。
> setAttributeに放り込んだユーザ定義変数が、うまく展開されて
> いないのか?という印象です。

  せめてこの line 123 がどこに相当するのか教えてくれないとこちらは手出
しできないです。

  なんのこっちゃよー分からんと思いましたが、下を見たら一発。

> 以上の実験から帰納して、「"」の展開が上手くいっていないのかなぁ?
> と考え、実体参照文字列「"」で置き換えてみたり、
> string = new String(string) で、
> 
> objectTag.setAttribute(new String(OTRMW) );
> 
> とやってみましたが、どうも上手く行かない…。

  setAttribute() の引数は一つじゃないです。name, value は別々な値が入り
ます。一緒の文字列にしたらそら動きません。上のエラーも value がねーぞ、
と怒られてるわけです。

  それが分かったところで読み返してみると

> setAttributeに放り込んだユーザ定義変数が、うまく展開されて
> いないのか?という印象です。

  実はほとんど正解にたどりついています。問題は「仕様」をチェックしてい
なかったこと。ちゃんと使い方は調べておきましょう。

http://www.doraneko.org/misc/dom10/19981001/ecma-script-language-binding.html

> setAttribute(name, value)
>    このメソッドは void を返す。name パラメータは DOMString 型である。
>    value パラメータは DOMString 型である。

  こういう情報は下手に入門用に「解説」してくれるものより仕様書の方が
チェックしやすいです。仕様書で入門しようとするのは不幸ですが、だからと
言って仕様書がダメということではありませんよ :-)

--
    ねこ丸