Zajmuję się klasyczną stroną ASP, która pobiera pewną zawartość z bazy danych i tworzy link Czytaj więcej po pierwszych 100 znaków w następujący sposób;Używanie javascript substring() do tworzenia linku czytaj więcej
<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>
Jednak skrypt po prostu obcina tekst po 100 znaków. Najlepiej byłoby, gdyby nadal pisał tekst do pierwszego okresu lub miejsca, na przykład. Czy to się da zrobić?
Dziękuję.
Może mam twoje pytanie źle, ale znasz funkcję String.indexOf(), która zwraca indeks pierwszego wystąpienia pewnego podłańcucha (lub -1, jeśli część nie została znaleziona). Przykład: alert ("foobar" .indexOf ("b")) wyświetla "3" jako indeks "b". Może możesz tego użyć do obcięcia struny w pożądanej pozycji? – Max