标题
我正试图使用javascript在smarty模板中实现"多读"one_answers"少读"选项,但我在输出文本时遇到了以下问题,当我单击"多读取"按钮时,一些字符丢失了。Truncate和substr
函数似乎有问题,并且它对于表中的每一行都不是常量。
$Test的最大大小->描述是200个字符,它有不同的文本长度,大约120、150、200等
我正在尝试使用截断函数显示前100个字符
{$Test->description|truncate:100:"}
,然后在单击"阅读更多"按钮后,使用substr函数将剩余字符从101到200。
这种逻辑似乎只适用于少数行,而不是所有行。
有人能建议解决这个问题吗?
test.tpl文件:
{foreach…}{$Test->description|truncate:100:"}{$Test->description|substr:101:200}阅读更多
{文字}#more{/literal}{$smarty.foreach.count.index}{literal}{display:none;}.button{/literal}{$smarty.foreach.count.index}{背景颜色:白色;颜色:黑色;边框:1px实心#e7e7e7;宽度:自动;字体大小:10px;}.button{/literal}{$smarty.foreach.count.index}{literal}:悬停{背景颜色:#e7e7e7;宽度:自动;字体大小:10px;}{/literal}<script language="JavaScript" type="text/javascript"> {literal} function myFunction{/literal}{$smarty.foreach.count.index}{literal}() { var dots = document.getElementById("dots{/literal}{$smarty.foreach.count.index}{literal}"); var moreText = document.getElementById("more{/literal}{$smarty.foreach.count.index}{literal}"); var btnText = document.getElementById("myBtn{/literal}{$smarty.foreach.count.index}{literal}"); if (dots.style.display === "none") { dots.style.display = "inline"; btnText.innerHTML = "Read more"; moreText.style.display = "none"; } else { dots.style.display = "none"; btnText.innerHTML = "Read less"; moreText.style.display = "inline"; } } {/literal} </script> </td> </tr> {/foreach}
我想我找到了答案
{$Test->描述|截断:100:":TRUE}{$Test->描述|子字符串:100:200}