2011-02-26 150 views
0

在我的容器news-variety我有4列,我只想把所有列都放在左边,并为每列写入动画。Javascript空白问题

为此我使用CSS left属性。

我写了函数来得到no。的列,但它增加了白色空间并显示错误,在我的情况下,我需要i0,1,2,3,4,但该函数显示0, 2, 4, 6, 8

请帮助我删除白色空间并将i的值设置为0,1,2,3,4

这是我的代码:

var newsVariety = document.getElementById('news-variety'); 
if(newsVariety){ 
    var newsColums = newsVariety.childNodes; 
    for(i=0;i<newsColums.length;i++){ 
     if(newsColums[i].className == "column") continue; 
     alert(i); 
    } 
} 
+0

由于继续声明,您的i值似乎不会线性上升。如果newsColumns [i] .classname =='列',那么你的警报(i)永远不会被调用。将它移动一行,你会看到一个线性进程。其余的屁股,呃,我不知道是什么你问我 – 2011-02-26 08:30:06

回答

1

除了元素之外,还得到了空格(文本)节点。您可以排除文本节点是这样的:

var newsVariety = document.getElementById('news-variety'); 
    if(newsVariety){ 
     var newsColums = newsVariety.childNodes; 
     for(i=0;i<newsColums.length;i++){ 
      if(newsColums[i].className == "column") continue; 
      if(newsColums[i].nodeType == 3) continue; 
      alert(i); 
     } 
    } 

但更好的解决办法是使用函数(的getElementsByTagName),只有给你摆在首位的元素,像这样:

var newsVariety = document.getElementById('news-variety'); 
    if(newsVariety){ 
     var newsColums = newsVariety.getElementsByTagName('whatever-your-element-tag-is'); 
     for(i=0;i<newsColums.length;i++){ 
      if(newsColums[i].className == "column") continue; 
      alert(i); 
     } 
    } 
+0

使用这样的:VAR newsVariety =的document.getElementById( '新闻品种');如果 (newsVariety){VAR = newsColums newsVariety.getElementsByTagName( 'DIV'); 为(i = 0 ; i 3gwebtrain 2011-02-26 08:56:29

+0

如果我删除这行“if(newsColums [i] .className ==”column“)continue;”那么它的工作正常,什么是错的? – 3gwebtrain 2011-02-26 09:02:13

+0

它是如何工作的?还有,你确定你想要继续如果className ==“c olumn“? “列”类的div不是你真正想要改变的吗? – Xoltar 2011-02-26 09:02:33

1

你忘记了,空白在DOM文本元素来表示。

if (newsVariety) { 
    var newsColums = newsVariety.childNodes; 
    for (col = 0, i = 0; i < newsColums.length; i++) { 
     if (newsColums[i].className == "column") 
     continue; 
     alert (col++); 
    } 
}