【问题标题】:Read more on Database result阅读有关数据库结果的更多信息
【发布时间】:2015-03-05 21:30:33
【问题描述】:

您好,我的代码非常简单,但出于设计目的,我希望保持一切整洁,目前我正在提取所有描述,就像有些可能很大,有些可能很小,无论如何,为了公平起见,我决定制作一个阅读更多按钮,一旦我点击它,只需在文本上展开,所以以某种方式让它显示之后的前 160 个字符......然后阅读更多链接按钮,当你点击它时它会展开并显示整个文本 这是我现在使用的脚本:

<p><?PHP echo $thismovie['description']; ?></p> <div style="text-align:right">

所以我想知道这是如何完成的,如果可能的话只使用 javascript,谢谢!

【问题讨论】:

  • 是的,您使用 javascript 来实现这一点。互联网上有很多关于如何实现这一目标的工作示例。
  • 是的,但是当结果是来自 mysql 的 commin 时没有,我似乎是 javascript 和 php 的新手,也没有那么好,我在发布这个问题之前确实寻找过这个数据库 + 扩展文本的拉动很容易
  • 这很容易。您只需输出整个描述并使用 javascript 隐藏描述的“额外”长度。如果目的是让用户能够单击并显示整个描述,则需要将整个描述加载到页面中。

标签: javascript php html mysql web


【解决方案1】:

使用css样式`text-overflow: ellipsis;和 jquery 以获得完整的功能。

$('#read-more').click(function() {
    $('#description').css('width','100%');
});
#description {
    white-space: nowrap; 
    width: 12em; 
    overflow: hidden;
    text-overflow: ellipsis; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="description">This is some long text that will not fit in the box</div> <a id="read-more" href="#">Read More</a>

【讨论】:

  • 这对每个单独的描述都不起作用,但上面的一个有效,谢谢你至少回答,谢谢!
  • 很高兴您找到了答案。 Mi 解决方案只工作一次,因为我使用了类的 id 实例。
【解决方案2】:

对于PHP方式:

$firstdesc=substr($thismovie['description'], 0, 160);

当阅读更多被按下时。

$totaldesc=substr($thismovie['description'], 160);

当然你也可以用 Javascript 来做。

【讨论】:

  • 所以它会是这样的:

  • @MEX 你可能想添加: if(strlen($thismovie['description']) > 160){ //添加阅读更多按钮.. } 所以你不会白白添加它。
  • 这不演示当更多被按下时显示描述。它也没有显示更多按钮。当页面上有多部电影时,这不是正确的答案,因为您强制服务器将每个电影描述的字符串连接两次。
  • 谢谢你再次帮助了我!
【解决方案3】:

虽然您当然可以使用 PHP,但另一种方法是正确使用 css 的 text-overflow 属性。

这种方法对服务器的压力会更小,尤其是当页面上有一堆描述时。使用 PHP 连接每一个不是有效的,也不是正确的方法。

删除一个类要简单得多。当您想显示较少时,您可以将其添加回来。

<style>
     .ellipsis {
         white-space: nowrap; 
         text-overflow: ellipsis; 
         overflow: hidden; 
         height: 14px;
     }
     .description {
         width: 300px;
         background: #ccc; 
         padding: 3px;
         margin-top: 30px;
         margin-bottom: 0;
     }
</style>

<!-- It is likely you would use a PHP loop for this but for illustration 
     purposes I've listed them out -->

<p class="description ellipsis"><?=$movie[0]['description']?></p>
<a href="#" class="read-more">Read More</a>

<p class="description ellipsis"><?=$movie[1]['description']?></p>
<a href="#" class="read-more">Read More</a>

<p class="description ellipsis"><?=$movie[2]['description']?></p>
<a href="#" class="read-more">Read More</a>

<!-- use as many as you want with no additional strain on server. -->

使用 JQUERY...http://jsfiddle.net/kx2nbv3z/

<!-- Include jQuery -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
    $(document)
        .on('click','.read-more',function() { 
            $(this).removeClass('read-more').addClass('show-less').html('Show Less').prev('.description').removeClass('ellipsis'); 
        })

        .on('click','.show-less',function() { 
            $(this).removeClass('show-less').addClass('read-more').html('Read More').prev('.description').addClass('ellipsis'); 
        })
    ;
</script>

纯 JAVASCRIPT...http://jsfiddle.net/8wsbw0u8/

<script>


if (document.body.addEventListener) {
    document.body.addEventListener('click',yourHandler,false);
}
else {
    document.body.attachEvent('onclick',yourHandler);//for IE
}

function yourHandler(e) {
    e = e || window.event;
    var target = e.target || e.srcElement;
    prev = target.previousSibling.previousSibling;
    if (target.className.match(/read-more/)) {
        target.className="show-less";
        target.innerHTML = "Show Less";
        prev.setAttribute("class","description");
        console.log(prev);
    }
    else if (target.className.match(/show-less/)) {
        target.className="read-more";
        target.innerHTML = "Read More";
        prev.setAttribute("class","description ellipsis");
    }
}
</script>

【讨论】:

  • 是的,这个脚本真的很棒,我很喜欢你的回答,但是从数据库中拉出多个结果,当我点击阅读更多时,它会同时打开,我目前正在尝试完成php的答案,我会告诉你我是怎么做到的^_^
  • 查看使用类而不是 id 的更新答案。它减少了服务器的开销,尤其是当页面上有大量描述时。
  • 还添加了反转过程的能力。自己看看...jsfiddle.net/kx2nbv3z
  • 这很好用,谢谢,我正在使用它,效果很好! , 有没有办法只用 javascript ? Jquery 很棒,我会保持这种方式,因为它看起来很简单并且可以正常工作让我知道是否有不使用 jquery 的方法谢谢!
  • 谢谢你,你是救命恩人,我欠你一个!
猜你喜欢
  • 1970-01-01
  • 2012-08-18
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
相关资源
最近更新 更多