NewEgg の製品 ID の形式を確認したかったので、そのホームページから次のスクリプトを実行して、リンクされているすべての製品の ID をコンソールに出力しようとしました。
for (var i=0;i<document.links.length;i++) {
if (document.links[i].href.indexOf("Product.aspx")!=-1) {
var itemNo=document.links[i].href.split("Item=")[1];
console.log(itemNo);
}
}
(ご覧のとおり、製品リンクには「Product.aspx」があり、その後に が続きます。後の部分を取得するのは?Item=[itemid]
簡単です)。このスクリプトはうまくいきました。しかし、「手の込んだ」ものにしようとすると、未定義のエラー メッセージが表示されるようになりました。試したスクリプトは次のとおりです。split
?Item=
itemNo
for (var i=0;i<document.links.length;i++) {
if (document.links[i].href.indexOf("Product.aspx")!=-1) {
var itemNo=document.links[i].href.split("Item=")[1];'
if (itemNo.charAt(0)=="N") {//look at only IDs that start with 'N'
console.log(itemNo);
}
}
}
これは、itemNo が 2 番目のif
ステートメント (if
上の 4 行目の内部) で定義されていないことを報告しました。if
ステートメント (4 行目と 6 行目) をコメントアウトすると、正常に動作するようになりました。つまり、基本的にはログに記録できますが、できませんif
。また、ロギング前の代わりにさらに文字列操作を試みましたif
が、 を定義する行の後では、ロギングitemNo
以外のことはできません。変数名を無駄に変更しようとしました。
確かに、これは Firebug コンソール (Firefox のネイティブ Scratchpad も試しました) からのものなので、環境は少し異なりますが、変数を定義する必要がある場合と定義しない場合がある理由はわかりません。