这是我的PHP代码:
<?php
require('connection.php');
$query="select title,content from blogs";
echo '<html><head>';
echo '<link rel="stylesheet" href="blog.css" />';
echo '<script type="text/javascript" src="blog.js"></script></head><body>';
$i=0;
if($result=$mysqli->query($query))
{
while($news=$result->fetch_row())
{
echo "<br /><br /><strong>". $news[0]."</strong><br /><br />";
if(strlen($news[1])>60)
{
$d=0;
$content=explode(" ",$news[1]);
foreach($content as $c)
{
if($d<=60)
{
echo $c." ";
$d++;
}
else
{
if($d==61)
{
echo "<div id=a$i style='visibility:hidden'>";
echo "<a href='#' onclick='toggle(a".$i.")' style='visibility:visible'>Show/Hide</a>";
$i++;
$d++;
}
echo $c." ";
$d++;
if($d==count($content)+1)
{
echo "</div>";
}
}
}
}
else
echo $news[1]."<br /><br />";
}
$result->close();
echo "</body></html>";
}
?>
这是我的JavaScript代码:
function toggle(id)
{
//document.getElementById('mcontent').value=x++;
//if(x%2==0)
document.getElementById(id).style.visibility="visible";
//else
//document.getElementById('mcontent').style.visibility="hidden";
};
show hide按钮不起作用。我的策略是使用show hide按钮限制包含超过60个单词的文本。一旦用户单击该按钮,隐藏的div变为可见并包含额外的文本(即文本)在60字数之后).Div元素应该始终以字母开头,所以我之前附加了字母'a'。请帮我解决这个问题。
注意: 不需要Jquery解决方案或建议。我只需要调试上面的代码。
答案 0 :(得分:5)
您在致电toggle
时错过了引号。
这会调用toggle(a0)
而不是toggle("a0")
。
试试这个:
echo "<a href='#' onclick=\"toggle('a".$i."')\" style='visibility:visible'>Show/Hide</a>";
由于我总是觉得处理这种级别的叠加引号很痛苦,我宁愿避免在PHP中内联javascript。即使没有jQuery,您也可以使用document.getElementById('...').onclick=...
推迟添加处理程序。
答案 1 :(得分:2)
此行的onclick
属性:
echo "<a href='#' onclick='toggle(a".$i.")' style='visibility:visible'>Show/Hide</a>";
...需要在toggle()
的参数周围加上双引号,以便浏览器以onclick='toggle("a1")'
的形式接收它:
echo "<a href='#' onclick='toggle(\"a".$i."\")' style='visibility:visible'>Show/Hide</a>";
答案 2 :(得分:1)
echo "<div id='a" . $i . "' style='visibility:hidden'>";
答案 3 :(得分:1)
toggle(a".$i.")
中的参数是一个字符串。您应该添加字符串分隔符。
此外,您应该在yout HTML标记中为您的属性添加引号:
echo '<div id="' . a$i . '" style="visibility:hidden">';