2012-09-12 47 views
0

这是我的PHP代码:PHP的Javascript显示/隐藏按钮不工作

<?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"; 
}; 

的显示隐藏按钮不working.My策略限制文本,其中包含超过60个单词与显示隐藏按钮。一旦用户单击按钮隐藏的div变得可见,并包含额外的文本(即60个字以内的文字).Div元素应始终以字母开头,所以我在此之前附加字母'a'。请帮我解决这个问题。

说明: 不需要Jquery解决方案或建议。我只需要调试上面的代码。

+0

你得到某种错误的?你可以提供一个JSFiddle吗? –

+0

当我单击显示/隐藏按钮重新加载页面但没有显示剩余的文本时,我不会收到任何错误。我无法提供JSFiddle,因为mysql会提取数据。 – user1633170

+0

当你有这种错误时,首先要做的是移除PHP部分并使用假硬编码数据。 – Rodolphe

回答

5

您在给toggle打电话时错过报价。

这将调用toggle(a0)而不是toggle("a0")

试试这个:

echo "<a href='#' onclick=\"toggle('a".$i."')\" style='visibility:visible'>Show/Hide</a>"; 

正如我总是觉得痛苦对付这个水平鳞片状的报价,我更喜欢以避免在PHP内联的JavaScript。使用document.getElementById('...').onclick=...即使没有jQuery,也可以推迟添加处理程序。

+0

非常感谢,有效。我差点忘了。 – user1633170

1
echo "<div id='a" . $i . "' style='visibility:hidden'>"; 
1

toggle(a".$i.")中的参数是一个字符串。你应该添加字符串分隔符。 并且还,你应该在YOUT HTML标签的报价添加到您的属性:

echo '<div id="' . a$i . '" style="visibility:hidden">'; 
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>";