【问题标题】:document.getElementsByClassName is not affecting elementsdocument.getElementsByClassName 不影响元素
【发布时间】:2015-02-06 17:18:57
【问题描述】:

我有以下脚本:

$i=1;
echo '<table>';
while($row=mysql_fetch_array){
  echo '<tr class="'.$i.'">';
  echo '<td>'.$row['value'].'</td>';
  echo '</tr>';
  $i++;
}
echo '</table>';

$i=1;
echo '<table>';
while($row=mysql_fetch_array){
  echo '<tr class="'.$i.'">';
  echo '<td>'.$row['value'].'</td>';
  echo '</tr>';
  $i++;
}
echo '</table>';
echo '<script>nr='.mysql_num_rows(query).'</script>';

Javascript:

$(document).ready(function(){ 
    for(i=26; i<=nr; i++){
        document.getElementsByClassName(i).style.display='none';    
    }
});

您可能已经知道,我正在尝试创建一个分页脚本。首先,不,我不想要一个已经制作好的 js 分页脚本,我希望它单独创建它(以及一些帮助当我在某些问题上被阻止的情况下)。第一步是隐藏从 25 tr 开始的其他元素。但问题是 document.getelementsbyclassname 不会影响它们...起初我使用 id 作为 tr,它工作,但只适用于第一个表(因为 id 必须是唯一的,在我的情况下,id 的值是相同的,所以我使用了类)。我不知道是什么问题......

【问题讨论】:

  • 这是getElementsByClassName 而不是getElementByClassName!缺少s
  • 类名不能以数字stackoverflow.com/questions/4089006/…开头
  • @szapio - 是的,他们可以 -> jsfiddle.net/784Lpk9o
  • @Teemu ,是的,我读过一些东西,但仍然找不到问题
  • 是的,没错,虽然它不是一个数组,但它是一个类似数组的对象。它的索引从0 到其长度为 1。如果您以某个随机值(例如26)开始循环,并以另一个随机值(nr)结束循环,您必须确保该集合确实具有这些索引。

标签: javascript php pagination


【解决方案1】:

不用$i上课。试试-

echo '<tr class="row-class">';

还有 jquery -

$(document).ready(function(){ 
    $('.row-class').each(function() {
        $(this).hide();
    })
});

根据需要添加条件。

或者不需要向行添加类。如果页面包含单个表格,则 -

$(document).ready(function(){ 
    $('table tr').each(function() {
        $(this).hide();
    })
});

【讨论】:

  • 操作员说得很清楚他的问题是什么以及他试图完成什么。像这样更改他的代码对他没有帮助。
  • “说得很清楚 [..] 他试图完成什么” - 是的,As you probably figured out,i'm trying to create a pagination script - 为什么没有指向概念上更好的方法的指针?对 0...n 的元素进行分类,有什么意义?可以在没有任何类的情况下遍历子元素。没有人应该提到这一点? CSS 和 javascript 有更好的内置函数 ..._and_ 概念;没有人应该提到这一点?对我来说没有意义。见meta.stackexchange.com/questions/66377/what-is-the-xy-problem
  • @VolkerK 你是对的。这可以在没有任何课程的情况下完成。
  • ....但可能不应该 ;-) 我的意思是我的评论是对 Memphistoles 评论和反对票的回复。
【解决方案2】:

类名不能以数字开头

Can XHTML and HTML class attributes value start with a number?

你可以试试assign class 'row'+$i

echo '<tr class="row'.$i.'">';
  echo '<td>'.$row['value'].'</td>';
 echo '</tr>';

js:

 for(i=26; i<=nr; i++){
        document.getElementsByClassName('row'+i).style.display='none';    
    }

【讨论】:

  • 如果我非常需要使用数字..还有其他方法可以捕获 html 元素而不是通过类和 id 吗?所以我可以使用数字?
  • @PetruLebada 正如我发布的那样,您可以添加前缀,这可以解决问题,或者您可以使用 unicode,阅读我链接的线程,您的问题有答案
猜你喜欢
  • 2013-08-01
  • 1970-01-01
  • 2019-03-29
  • 1970-01-01
  • 2021-06-19
  • 2015-05-03
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多