2017-01-12 28 views
0

我想從一個頁面獲取鏈接。這裏有一個簡單的代碼來獲取來自某個dom元素的所有鏈接。不能在Chrome的控制檯中進行「分割」

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 
} 

重要提示!我通過複製整個代碼(rez填充代碼和rez迭代以進行拆分)一步完成所有操作。 ,我在控制檯收到此錯誤:

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

爲什麼?

+0

你可以添加'console.log(rez [i] .page_url)的日誌; // < - 此作品'? – Mijago

+0

我會改變它一點,所以不揭示真正的網址,但它會像'http:// something ... like-this.com/blablabla' – kaytrance

+0

你確定數組中的每一項都有一個'page_url財產?如果其中一個不存在,當試圖訪問'res [i] .page_url'時,它將是'undefined',這將解釋你正試圖調用'undefined'的錯誤消息。你可能必須在'if(res [i] .page_url!== undefined){/ * do split * /}'之前測試'page_url'。 –

回答

1

split()函數用於將一個字符串拆分爲一個子字符串數組。在分裂的功能參數,你必須把一個分離器,例如:

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

這將返回數組["http:", "", "something...like-this.com", "blablabla"]

在你的情況,你試圖通過一些文本http://something分裂... 「並獲得數組的第二個元素[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」)); –