- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果我错误地提出了这个问题,或者如果之前有人提出并回答过这个问题,我深表歉意,我的搜索出现了类似的基于 JQuery 的问答,我正在寻找一个纯 JavaScript 解决方案。
var len = 100;
var p = document.getElementById('shrinkMe');
if (p) {
var trunc = p.innerHTML;
if (trunc.length > len) {
trunc = trunc.substring(0, len);
trunc = trunc.replace(/\w+$/, '');
trunc += '<a href="#" ' +
'onclick="this.parentNode.innerHTML=' +
'unescape(\''+escape(p.innerHTML)+'\');return false;">' +
'Read More<\/a>';
p.innerHTML = trunc;
}
}
fiddle 会用 JavaScript chop 文本,但在当前状态下,它只出现一次,这并不是我所需要的。我在我的 html 正文中多次出现作为 div id 的“shrinkMe”,并且由于使用了 .getElementById,这需要进行调整,因为在单击“阅读更多”时它会同时展开所有事件。我相信更改为 .getElementsByClassName 可能是使我能够多次出现类名的解决方案,而不是仅限于 .getElementById 的一个实例,但我不确定如何进行切换。
我也在寻找一个可点击的“Read Less”,一旦点击“Read More”就会显示,“Read Less”将文本返回到 chop 状态,然后“Read More”再次可见等等。
总而言之,我请求的帮助是:
感谢您花时间阅读本文 - 抱歉,如果我无意中不清楚。如果是这样,请告诉我,我会尝试进一步解释。
最佳答案
因此,有些人对此的直接 react 可能是“使用 jquery,这样您就可以轻松查询 parent 、 sibling 等,等等等等”。我一直拒绝并用纯 JS 完成(这很有趣)。
我改变了两个主要的东西:
我已将您的隐藏文本存储在父段落标签下的隐藏段落中。这样我们就不必使用一些全局 JS 变量来保存您的隐藏文本;我宁愿将这样的东西存储在 DOM 上。像这样:
<span id="parent1">Some text<span class="hidden">Hidden overflow text</span></span>
我已经给相关的 anchor 标签和隐藏的段落标签相互关联了相应的ID。所以你会有 shrinkMe、shrinkMeOverflow、shrinkMeMoreLink、shrinkMeLessLink。这样可以更轻松地对相关事物进行分组。这可能是渲染时间的一个考虑因素,但对于这个例子并保留你的原始代码,我已经通过替换 innerHtml 来完成它。你会在这个循环中看到:
for (var i = 0; i < shrinkables.length; i++){
var fullText = shrinkables[i].innerHTML;
if(fullText.length > len){
var trunc = fullText.substring(0, len).replace(/\w+$/, '');
var remainder = "";
var id = shrinkables[i].id;
remainder = fullText.substring(len, fullText.length);
shrinkables[i].innerHTML = '<span>' + trunc + '<span class="hidden" id="' + id + 'Overflow">'+ remainder +'</span></span> <a id="' + id + 'MoreLink" href="#!" onclick="showMore(\''+ id + '\');">More</a><a class="hidden" href="#!" id="' + id + 'LessLink" onclick="showLess(\''+ id + '\');">Less</a>';
}
}
这是完整的 fiddle :http://jsfiddle.net/oxfb3wjs/3/
如果您有任何问题,请告诉我。希望我有所帮助!
编辑:此外,您会在 fiddle 中看到我确实按照您的意愿使用了 getElementsByClassName。我忘了谈这个,但这就像循环返回的元素一样简单。 (见 fiddle )
关于javascript - 使用带有 "Read More"和 "Read Less"的 JavaScript chop 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29698072/
我正在使用 onclick javascript 方法,动态内容如下: onclick="adviceEvent('${advice?.content}');" 建议内容介于字符串之间,例如: Che
我想 chop 一个具有字符限制的字符串,并且最后一个字符应该是空格的条件(这样我就没有被 chop 的单词) 示例: var sentence = "The string that I want t
我正在使用省略号 chop 文本并在工具提示上显示整个文本。如果文本溢出,则仅显示工具提示。工具提示在 Chrome 中看起来不错,但在 IE 和 Firefox 中却不行。在 IE 中,工具提示文本
我正在使用带有 rails ( http://jrvis.com/trunk8/#toggle ) 的 trunk8 jquery 插件,它只会 chop 前几个句子,直到第一个中断空格。这是我的代码
Readmore Js 只折叠 div block 而不折叠文本。请帮助我 chop 文本和 div 容器,而不仅仅是 div。非常感谢 London is the most popul
我有一个 div,它会动态填充一些可能包含或不包含链接的文本。 例如: Welcome to Stackoverflow. Someone will provide an answer to
作为一些背景 使用 Material UI Multiple Select,您可以 chop 选择后显示的值,而不是转到另一行(通过将 renderValue 设置为 .join selected 选
有人可以向我解释一下为什么不能将包含空格的字符串作为参数传递到 JavaScript 函数中吗? 这是我的代码,显示了这个问题,只需将鼠标悬停在链接上,您就会看到只有“mario”显示为标题,而不是“
我在打印模块内容时遇到了问题,这发生在所有浏览器上。当我打印模态内容时,它只预览第一页,第一页之后的任何内容都会被切断。我已经尝试在 Chrome 打印模拟器中进行调试,但仍然无法找到解决方案。 在某
我正在尝试检测是否使用 JS chop 了文本。解决方案mentioned here除了下面的边缘情况外,效果很好。您会注意到,如果文本在视觉上被 chop ,则鼠标悬停的第一个 block 将返回
我制作的模态面临一个罕见的问题。我有一个iframe,可以在该模式下加载嵌入式youtube视频,它在为测试该视频而创建的单独HTML文件(空白)上运行良好。 当我尝试将其加载到实际网站的本地模板上时
我有一个 Javascript,它从两个 HTML 下拉列表中读取文本,删除所有特殊字符,然后将文本存储在变量中。下拉列表中的文本来自 JSON 文件。问题是,只要下拉列表中的文本有撇号,Javasc
在node和chrome中,下面的代码只给了我10个堆栈帧,而我期望的是100个。有什么方法可以打印整个堆栈吗? function blowUp(n) { if(n > 100) {
所以我有一个对象数组,问题是返回的名称很长。我怎样才能让名字结果看起来像 returnedArray: [ {name:'reallyy..',age:'28',hobby:'blah'},{name
我遇到了一些字符串溢出其容器的问题。我当然可以使用溢出:隐藏,但它看起来不太好,因为我更喜欢文本溢出:省略号。然而,对此的跨平台支持充其量是不确定的,而且我发现的现有解决方案不允许字符串在包含空格时换
我正在编写 jQuery 应用程序,但遇到了障碍。 我需要我的双行描述简介能够在浏览器大小调整时随着文本回流而做出响应。下面的示例成功地收缩了字符串的大小,并在缩小浏览器时替换为省略号。但是当您扩大浏
当前版本: def chop(ar,size): p=len(ar)/size for i in xrange(p): yield ar[(i*size):((i+1)
My Codepen if("matchMedia" in window) { if(window.matchMedia("(max-width: 533px)").matches) {
我这里遇到了一些问题。 我基本上是在 div 中循环项目,以便每个项目都有一个可以使用的键,这样当单击图标时,就会出现一个编辑模式并填充所选项目的数据。 这可行,但我想为我的跨度添加功能 {{ $no
我有一个代码块,其中包含以下形式的行: 在接收端,我有一个像这样抓取数据的文档: $title = $_POST['title']; 这将被插入到数据库中,但任何包含撇号的“标题”都会在撇号处被
我是一名优秀的程序员,十分优秀!