使用php将类添加到li,然后在每三项之后交替?
这可能非常简单,但我正在试图找到一种方法,将一个类添加到无序列表中,然后在每三个项之后替换该类 我只想在每三个项目上添加一个类(这不是我想要的),但下面是我的代码:使用php将类添加到li,然后在每三项之后交替?,php,css,addclass,Php,Css,Addclass,这可能非常简单,但我正在试图找到一种方法,将一个类添加到无序列表中,然后在每三个项之后替换该类 我只想在每三个项目上添加一个类(这不是我想要的),但下面是我的代码: <?php $i=1; foreach($this->items as $item) : ?> <li class="<?php if ($i % 3 == 0) : ?>odd<?php endif; ?>"><a href="<?php echo $l
<?php $i=1; foreach($this->items as $item) : ?>
<li class="<?php if ($i % 3 == 0) : ?>odd<?php endif; ?>"><a href="<?php echo $linky; ?>">xxx</a></li>
<?php $i++; endforeach; ?>
你用错了接线员
if ($i % 3 == 0)
表示“如果$i除以3的余数为0”
你想要的是
if (floor($i/3) == 0).
试一下,看看进展如何
编辑:您似乎还缺少“else”代码。如果没有,它就不会为非“奇数”类编写“偶数”
编辑:如果希望图案继续,请使用:
if ((floor($i/3) % 2) == 0).
使用每次$i%3==0时翻转(否定)的布尔标志:
// Start with 0 instead of 1
$i=0;
// Flag starts TRUE
$state = TRUE;
foreach ($this->items as $item) {
if ($i % 3 === 0) {
// Flip to opposite state
$state = !$state;
}
?>
<li class="<?php if ($state) : ?>odd<?php else: ?>even<?php endif; ?>"><a href="<?php echo $linky; ?>">xxx</a></li>
<?php
$i++;
}
//从0开始,而不是从1开始
$i=0;
//标志开始为TRUE
$state=TRUE;
foreach($this->items as$item){
如果($i%3==0){
//翻转到相反的状态
$state=!$state;
}
?>
尝试将for-each循环嵌套在for循环中。外部循环告诉您要迭代多少次,内部循环告诉您要放入奇数和偶数的次数。我假设您希望第7项为“奇数”?我编写了JavaScript,但应该可以轻松地转换为PHP
for(var i=0;i<15;i++){
如果(i%6<3){
文件。书写(“奇数
”;
}
否则{
文档。写入(“偶数
”)
}
}
将代码更改为:
<?php $i=0; foreach($this->items as $item) : ?>
<li class="<?php if ($i % 6 < 3) : ?>odd<?php else: ?>even<?php endif; ?>"><a href="<?php echo $linky; ?>">xxx</a></li>
<?php $i++; endforeach; ?>
循环的每三次迭代只打印一次的原因是,您正在使用模运算符“%”
测试i是否可被三整除($i%3==0)
。这只会导致在$i可被三整除时打印
要解决您的问题:
<?php
$odd = "<li class='odd'>";
$even = "<li class='even'>";
$i = 0;
foreach($this->items as $item)
{
if($i < 3)
echo $odd . $item . "</li>";
else if($i >= 3)
echo $even . $item . "</li>";
$i++;
if($i > 5)
$i = 0;
}
?>
另一种方法是使用新的CSS3选择器,允许您针对奇数和偶数儿童
这里有一个链接和一个例子。基本上,你的列表和平常一样
<ul>
<li></li>
<li></li>
</ul>
这将使所有偶数列表项的背景为#fff,而所有奇数列表项的背景为#000
编辑:在前两个使用第一个孩子和第二个孩子之后,您可以使用其他几个CSS3选择器只针对偶数和赔率。您能确认“我希望得到的是”标记吗?这似乎很不寻常,因为类名不再描述内容(即奇数项没有“奇数”类)。对不起,这对我来说很有意义。可以说,我每“行”使用三个li。因此,每套三个li的布局将有所不同:)钯-(地板($I/3)==0)
对于介于0和2之间的i,计算结果为true,否则为false-这不是作者想要的。感谢您的帮助:)耶,我知道我丢失了else标记,我只是想让3先说奇数lol@SamDufel但这正是作者所说的“我希望得到的”即使类名是“奇数”或“偶数”,她的预期结果也不是交替使用“奇数”和“偶数”。
<?php $i=0; foreach($this->items as $item) : ?>
<li class="<?php if ($i % 6 < 3) : ?>odd<?php else: ?>even<?php endif; ?>"><a href="<?php echo $linky; ?>">xxx</a></li>
<?php $i++; endforeach; ?>
<?php
$odd = "<li class='odd'>";
$even = "<li class='even'>";
$i = 0;
foreach($this->items as $item)
{
if($i < 3)
echo $odd . $item . "</li>";
else if($i >= 3)
echo $even . $item . "</li>";
$i++;
if($i > 5)
$i = 0;
}
?>
<ul>
<li></li>
<li></li>
</ul>
li:nth-child(even) { background: #fff; }
li:nth-child(odd) { background:#000; }