Using javascript substring() to create a read more link
asp-classic, javascript, jquery
Solution
var cutoff = 100;
var text = $('div.contentdetail').text();
var rest = text.substring(cutoff);
if (text.length > cutoff) {
var period = rest.indexOf('.');
var space = rest.indexOf(' ');
cutoff += Math.max(Math.min(period, space), 0);
}
// Assign the rest again, because we recalculated the cutoff
rest = text.substring(cutoff);
var visibleText = $('div.contentdetail').text().substring(0, cutoff);
EDIT: shortened it a bit. EDIT: Fixed a bug EDIT: QoL improvement
Problem
I'm developing a Classic ASP page that pulls some content from a database and creates a Read more link after the first 100 characters as follows; ``` <div class="contentdetail"><%=StripHTML(rspropertyresults.Fields.Item("ContentDetails").Value)%></div> <script type="text/javascript"> $(function() { var cutoff = 200; var text = $('div.contentdetail').text(); var rest = $('div.contentdetail').text().substring(cutoff); if (text.length > 200) { var period = rest.indexOf('.'); var space = rest.indexOf(' '); cutoff += Math.max(Math.min(period, space), 0); } var visibleText = $('div.contentdetail').text().substring(0, cutoff); $('div.contentdetail') .html(visibleText + ('<span>' + rest + '</span>')) .append('<a title="Read More" style="font-weight:bold;display: block; cursor: pointer;">Read More…</a>') .click(function() { $(this).find('span').toggle(); $(this).find('a:last').hide(); }); $('div.contentdetail span').hide(); }); </script> ``` However, the script obviously just cuts the text off after 100 characters. Preferably I would like it to keep on writing text until the first period or space, for example. Is this possible to do? Thank you.