php - 使用 php 在 html 中编写动态悬停标签
问题描述
我正在关注链接:悬停标签。我正在阅读文件内容,希望将其作为id print tabcontent 相应地。
我的文件:NamingClass.txt
包含:
Bicycle
MountainBike
Test
我的 php 代码包含:
<div class="tab">
<?php
$filename="NamingClass.txt";
$Content=file($filename);
$NoOfLine=count(file($filename));
for($i=0;$i<$NoOfLine;$i++)
{
$cont=$Content[$i];
$jid="'$cont'";
echo '<button class="tablinks" onmouseover="openCity(event, '.$jid.')">'.$cont.'</button>';
}
echo '</div>';
for($i=0;$i<$NoOfLine;$i++)
{
$cont=$Content[$i];
echo '<div id="'.$cont.'" class="tabcontent">
<h3>'.$cont.'</h3>
<p> Content1 code.....</p>
</div>';
}
?>
但是 tabcontent 值没有打印。我认为我在这里做的错误是$jid因为在原始代码中
<button class="tablinks" onmouseover="openCity(event, 'London')">London</button>
为了在 php echo 中打印 'London',我使用了 $jid="'$cont'";
echo '<button class="tablinks" onmouseover="openCity(event, '.$jid.')">'.$cont.'</button>';
我已经尝试了所有的可能性,但它没有打印 tabcontent 请提出一些建议。
解决方案
当您分配 $NoOfLine 时,使用 count ( $Content );,而不是 count ( file ( $filename ) ); 此外,两个循环似乎都在做同样的事情,所以我会将它们组合起来,然后在 for() 循环中回显您的第一个代码块,并在第一个 for() 循环中构建您的第二个回显,然后回显构建的数据在 for() 循环完成后,file() 也不会删除 EOL(s),所以当你吃掉你的 file() 时,我会使用 array_map 和 trim||rtrim()。我还认为,当您已经在“$Content[$i]”中拥有变量时,重写/复制变量是浪费...
例子...
$filename = "NamingClass.txt";
$Content = array_map ( 'rtrim', file ( $filename ) );
$NoOfLine = count ( $Content );
$secondL = '';
for ( $i = 0; $i < $NoOfLine; $i += 1 )
{
echo '<button class="tablinks" onmouseover="openCity(event, \'' . $Content[$i] . '\')">' . $Content[$i] . '</button>';
$secondL .= '<div id="' . $Content[$i] . '" class="tabcontent">
<h3>' . $Content[$i] . '</h3>
<p> Content1 code.....</p>
</div>';
}
echo '</div>';
echo $secondL;
推荐阅读
- javascript - JavaScript 原型函数覆盖
- odoo - Odoo - 从其他模块更改字段
- javascript - 事件监听器似乎不认识我的班级?
- node.js - 如何在 Node.js 中将环境变量设置为未定义?
- ubuntu - 尝试获取时没有可构建的 Go 源文件
- sql - 存储用户帐户权限的最佳方式?
- swift - 如何使用应用程序委托以编程方式控制启动图像?
- java - 如何在 Java 的 LocalDateTime 和 LocalDate 上配置 Jackson 序列化?
- java - 为什么 Jenkins 没有运行我所有的 TestNG 测试?
- python - Pandas 基于密码重命名列