【问题标题】:PHP Javascript Show/Hide button not workingPHP Javascript显示/隐藏按钮不起作用
【发布时间】:2012-09-12 08:05:26
【问题描述】:

这是我的 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";
};

显示隐藏按钮不起作用。我的策略是使用显示隐藏按钮限制包含超过 60 个单词的文本。一旦用户单击按钮,隐藏的 div 变得可见并且包含额外的文本(即文本在 60 字数之后)。Div 元素应始终以字母开头,因此我在此之前附加了字母“a”。请帮我解决这个问题。

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

【问题讨论】:

  • 你有什么错误吗?看你提供一个 JSFiddle 吗?
  • 遇到这种bug,首先要做的就是去掉PHP部分,使用伪造的硬编码数据。
  • 我的问题已解决。无论如何感谢您的帮助。

标签: php javascript


【解决方案1】:

您在致电toggle 时缺少引号。

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

试试这个:

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

因为我总是觉得处理这种级别的叠层引号很痛苦,所以我更愿意避免在 PHP 中内联 javascript。即使没有 jQuery,您也可以推迟添加处理程序,使用 document.getElementById('...').onclick=...

【讨论】:

    【解决方案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>";
    

    【讨论】:

      【解决方案3】:
      echo "<div id='a" . $i . "' style='visibility:hidden'>"; 
      

      【讨论】:

        【解决方案4】:

        toggle(a".$i.")中的参数是一个字符串。您应该添加字符串分隔符。 而且,你应该在你的 HTML 标签中为你的属性添加引号:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 2019-10-08
          • 1970-01-01
          • 1970-01-01
          • 2014-09-02
          • 1970-01-01
          相关资源
          最近更新 更多