为什么getElementsByClassName不起作用?

时间:2014-11-12 07:32:37

标签: javascript css

我尝试检测屏幕分辨率,然后设置位置(如顶部,左侧)以获得多个屏幕分辨率,但它无法正常工作。 任何人都知道我的代码有什么问题吗?

CSS:

.Scrolloutside
{
  position:relative;
  left: 550px;
 }

的javascript:

  var nHeight = screen.height;
  var nWidth = screen.width; 
  if (nHeight ==714 && nWidth==1005)
 {
   //document.write("height:"+nHeight+" ,width="+nWidth+"<br>");
   var newsTarget = document.getElementsByClassName('Scrolloutside');
   newsTarget.style.top= "500px";
  }

HTML:

<div class = "Scrolloutside">
    <div class="scroller_title">News</div>
<div class="scroller_container">
    <div class="jscroller2_up">
    <?
    echo $secnews;
    ?>
    </div>
</div>
</div>
</div>

3 个答案:

答案 0 :(得分:5)

document.getElementsByClassName()会返回nodeListHTMLCollection,它们都是元素列表,而不是单个元素。即使只有一个匹配元素,它仍会返回一个只包含一个项目的列表。因此,您必须获取列表中的第一项或遍历整个列表(取决于您的代码所需)。

从列表中获取第一项(如果您可以假设只有一个具有类名的项目):

var newsTarget = document.getElementsByClassName('Scrolloutside');
newsTarget[0].style.top= "500px";

或遍历列表(如果可能有多个具有该类名的项目):

var newsTarget = document.getElementsByClassName('Scrolloutside');
for (var i = 0; i < newsTarget.length; i++) {
    newsTarget[i].style.top= "500px";
}

答案 1 :(得分:0)

用作

newsTarget[0].style.top= "500px";

getElementsByClassName()方法返回文档中具有指定类名的所有元素的集合,作为NodeList对象。

NodeList对象表示节点的集合。可以通过索引号访问节点。索引从0开始

答案 2 :(得分:0)

在页面底部使用此功能。

newsTarget[0].style.top= "500px";