2017-01-12 10 views
0

1つのページからリンクを取得しようとしています。ここでは、特定のdom要素からすべてのリンクを取得する簡単なコードを示します。クロムのコンソールで「分割」できない

var $ = jQuery; 
var page = $("#main .entry p"); 
var rez = []; 

for(var i=0; i<page.length;i++) { 
    var title = $(page[i]).find("a").text(); 
    var info = $(page[i]).text(); 
    var page_url = $(page[i]).find("a").attr("href"); 
    rez.push({ 
     title: title, 
     page_url: page_url, 
     info: info 
    }); 
} 

私はChromeブラウザのコンソールでこのコードを使用しています。

すべて正常に動作します。 rez配列に値が設定されていて、console.table(rez)のようなもので非常にわかります。

今私はsplit

for(var i=0; i<rez.length;i++) { 
    console.log(rez[i].page_url); // <- this works 
    console.log(rez[i].page_url.split("http://something...")[1]); // <- this fails 
} 

重要な注意を使用して、前のステップで収集したURLから特定の部分を除去しようとしています!私はすべてのコードをコピーすることで(コードを作成し、分割を行うためにrezを反復することによって)、すべてを1つのステップで実行しています。 そして、私は、コンソールでこのエラーを取得しています:

VM7064:18 Uncaught TypeError: Cannot read property 'split' of undefined 
    at <anonymous>:18:29 

なぜ?

+0

'console.log(rez [i] .page_url)のログを追加できますか? // < - this works'? – Mijago

+0

本当のURLを明らかにするのではなく少し変更しますが、 'http:// something ... like-this.com/blablabla'のようになります – kaytrance

+0

本当に配列のすべての項目に' page_url '財産? 'res [i] .page_url'にアクセスしようとすると' undefined'となり、 'undefined'を' split'と呼んでいるというエラーメッセージを説明します。 if(res [i] .page_url!== undefined){/ * do split * /} 'の前に' page_url'をテストしなければならないかもしれません。 –

答えて

1

split()関数は、文字列を部分文字列の配列に分割するために使用します。スプリット機能では、パラメータとして使用すると、たとえば、セパレータを配置する必要があります:

" http://something...like-this.com/blablabla ".split("/");

これはあなたがいくつかのテキスト"http://somethingによって分割してみてください、あなたの場合は、アレイ["http:", "", "something...like-this.com", "blablabla"]

を返します... "、配列の2番目の要素を取得する[1]。これはあなたのすべての場合にあなたを未定義に戻します。

+0

私は 'rez [i] .page_url.split(" t ")'のような何かをしようとすると同じエラーが出ますが、これは間違いなく配列を返すはずですが、同じエラーが発生します – kaytrance

+0

これを試すことができますか?ログから結果を追加してください: var p_link = rez [i] .page_url; console.log(p_link); console.log(p_link.split( "t")); –

関連する問題