2015-11-05 82 views
2

我現在有這個問題,如果我將控制檯登錄元素本身,它會顯示在鉻中的長度,但它沒有正確顯示長度,當我使用.length。Javascript沒有正確記錄長度

Chrome console

<html xmlns="http://www.w3.org/1999/xhtml"> 
 
    <head> 
 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
 
    <title>Hello World - Google Web Search API Sample</title> 
 
    <script src="https://www.google.com/jsapi" 
 
     type="text/javascript"></script> 
 
    <script language="Javascript" type="text/javascript"> 
 
\t 
 
    google.load('search', '1'); 
 

 
    function OnLoad() { 
 
\t 
 
     var searchControl = new google.search.SearchControl(); 
 
\t 
 
     var localSearch = new google.search.LocalSearch(); 
 
\t 
 
     searchControl.addSearcher(new google.search.WebSearch()); 
 
\t 
 
     localSearch.setCenterPoint("New York, NY"); 
 
\t 
 
     searchControl.draw(document.getElementById("searchcontrol")); 
 
\t 
 
     searchControl.execute("a"); 
 
    } 
 
    google.setOnLoadCallback(OnLoad); 
 
    </script> 
 
    </head> 
 
    <body onLoad="myFunction()"> 
 
    <div id="searchcontrol">Loading</div> 
 
    <script> 
 
function myFunction() { 
 
\t  var y = document.getElementsByClassName('gsc-webResult gsc-result'); 
 
\t  
 
\t  var y2 = y.length; 
 
\t  console.log(y); 
 
\t  console.log(y2); 
 
} 
 
</script> 
 
    </body> 
 
</html>

如所看到的上述我節省在VAR y中的元素和保存y的長度Y2。然後我在控制檯記錄這些變量,但它沒有顯示正確的長度。

我不確定這裏有什麼問題,希望你能幫上忙。

編輯:添加了工作源代碼。

+0

您的代碼段正在欺騙,因爲沒有任何項目將始終記錄爲0.請添加一些示例內容,以確定它是否實際記錄了不正確的長度,因爲我已經_never_看到Chrome做了類似不正確的日誌記錄長度的操作。 – somethinghere

+1

我們需要看到一個工作片段..你可以創建一個小提琴嗎?這些元素後來是否被任何機會填充? –

+0

我在這裏看到'1',有什麼不對? –

回答

-1
var y = document.getElementsByClassName('gsc-webResult gsc-result'); 

返回與您的查詢匹配的所有元素的數組。因此y.length會顯示數組的長度,而不是元素的長度。

嘗試y[0]假設您想要的元素是數組中的第一個元素。然後假設你想要文本的長度,那麼長度就是這個值。另外,如果你只需要一個元素,你可能想讓你的查詢更具體 - 但很難說,因爲你沒有發佈相應的DOM樹。

+2

爲什麼人們喜歡這個?具有「長度」的元素?你在忙什麼?你爲什麼想要一個'element element'的長度?那麼,如何以任何方式解決根據OP,「y.length」不等於「y.length」的問題? – somethinghere

+1

自從我的回答以來,這個問題已被修改......但是,感謝您的善意和富有洞察力的評論:) –

+0

還應該注意我的回答是相關的,並且在編輯之前回答了OP ... –