Witam. Mam problem odnośnie napisania funkcji, która będzie ukrywała/odsłaniała długi tekst zawarty w postach umieszczonych na mojej stronie głównej. Jestem początkującym programistą, a JS jest dla mnie nowością, więc być może posiadam nawyki zaczerpnięte z innych języków. Trochę namieszałem w moim kodzie, dlatego postaram się go lekko wytłumaczyć. Funkcja reduceText zwraca mi wartość która powinna być odnośnikiem do elementu na którym chcę wywołać zdarzenie, a więc 'a', zaś funkcja showText przyjmuje oprócz identyfikatora paragrafu tekst który chcemy wyświetlić w zawartości. Zależy mi na tym aby ograniczyć tekst o długości większej niż 250 znaków i dodać do niego odnośnik "Czytaj więcej", którego kliknięcie spowoduje odsłonienie pozostałej zawartości. Oto kod:
function reduceText(id) {
'use strict';
var p = document.getElementById(id);
var val = p.childNodes[2];
var result = val.nodeValue.substring(0,250) + "...";
val.nodeValue = result;
var a = document.createElement('a');
a.appendChild(document.createTextNode("Czytaj więcej"));
p.appendChild(a);
return a;
}
function showText(id,content) {
'use strict';
var p = document.getElementById(id);
var val = p.childNodes[2];
val.nodeValue = content;
}
window.onload = function() {
'use strict';
var number = 5;
var content = new Array();
for(var i=0;i<number;i++) {
content[i] = document.getElementById('post'+(i+1)).childNodes[2].nodeValue;
if(content[i].length > 250) {
var clicker = reduceText('post'+(i+1));
clicker.onclick = function() {
showText('post'+(i+1),content[i]);
};
}
}
};