2015-11-05 97 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 ... –