dポイントプレゼントキャンペーン実施中!

こんばんは。

次のような配列
"http://www.yahoo.co.jp", "Yahoo!"
"http://www.google.co.jp", "google"
(...以下同様...)

aryLink[0]["URL"] → "http://www.yahoo.co.jp"
aryLink[1]["Text"] → "google"
というように参照できるようにしたいのですが
下記のスクリプトで「'aryLink[...]'はまたはオブジェクトではありません」というエラーになってしまいます。
どうすればよいのでしょうか?教えてください。
よろしくお願いします。

--
var DEBUG=1;

aryLink = new Array(2);
for (i = 0; i < aryLink.length; i++) {
aryLink[i] = new Array();
}

var IE = WScript.CreateObject("InternetExplorer.Application");
IE.Navigate("http://www.yahoo.co.jp");
while(IE.busy);
while(IE.Document.readyState != "complete");

var objTagsAs = IE.Document.all.tags("A");

if(DEBUG) {
for (i = 0; i < 5; i++) {
WScript.Echo(objTagsAs[i] + "," + objTagsAs[i].innerText);
}
}

for (i = 0; i < objTagsAs.length; i++) {
aryLink[i]["URL"] = String(objTagsAs[i])
aryLink[i]["Text"] = String(objTagsAs[i].innerText);
}

A 回答 (1件)

> aryLink = new Array(2);


> for (i = 0; i < aryLink.length; i++) {
>   aryLink[i] = new Array();
> }
より、0番目と1番目にしか配列(new Array())が確保されていません。

しかし、objTagsAs は2個以上の要素を持っていると思われるため、
> for (i = 0; i < objTagsAs.length; i++) {
のループで i が2になったとき、anyLink[2] は配列ではないのに anyLink[2]["URL"] というアクセスをしているため、エラーとなっているのです。

つまり anyLink は、objTagsAs と同じ数の要素に配列を確保しておかなければならないのです。

var objTagsAs = IE.Document.all.tags("A");
var aryLink = new Array(objTagsAs.length);    // objTagsAsと同じ要素数で確保
for (var i = 0; i < objTagsAs.length; i++) {
  anyLink[i] = new Array();             // ここで配列を確保
  aryLink[i]["URL"] = String(objTagsAs[i])
  aryLink[i]["Text"] = String(objTagsAs[i].innerText);
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!