Avatar billede pcdl Nybegynder
27. april 2008 - 15:19 Der er 26 kommentarer og
1 løsning

opdel text hver 100 ord

Hej har et script som tæller ord op det udskriver så teksten her
document.getElementById("desc").innerHTML=text;
kan man på en måde gøre så efter hvert 100 ord laver den et linie skift
Avatar billede pcdl Nybegynder
27. april 2008 - 15:29 #1
også meget gerne hvis man kan undgå at text kan indeholde html kode
Avatar billede w13 Novice
27. april 2008 - 15:30 #2
innerHTML vil ikke holde i fremtiden, så jeg har lavet en løsning, der bruger gyldig DOM:

var o=document.getElementById("test");
text=text.split(" ");
for(var i=0;i<text.length;i++){
    o.appendChild(document.createTextNode(text[i]+" "));
    if((i+1)%100==0)o.appendChild(document.createElement("br"));
}
Avatar billede w13 Novice
27. april 2008 - 15:30 #3
Og med createTextNode, som jeg bruger, vil det ikke kunne indeholde HTML. :)
Avatar billede w13 Novice
27. april 2008 - 15:30 #4
Det vil sige: der kan selvfølgelig godt stå HTML i teksten, men det bliver ikke udført som HTML - kun som tekst.
Avatar billede w13 Novice
27. april 2008 - 15:31 #5
Og bemærk, at document.getElementById("test") er det objekt, som teksten lægges i.
Så du skal nok rette "test" til "desc".
Avatar billede pcdl Nybegynder
27. april 2008 - 15:33 #6
w13 tænkte på om du gad kigge på hele scriptet så? fordi der er brugt innerhtml igennem hele scriptet det fylder ialt 60 linier
Avatar billede w13 Novice
27. april 2008 - 15:36 #7
Jo, jeg kan da godt lige se, om det er noget, jeg kan gøre noget ved.
Nogle gange er det svært, når man ikke er 100% inde i scriptet, og nogle gange skal hele scriptet simpelthen bare være kodet på en bestemt måde, for at man kan undgå innerHTML.

Men prøv at vise mig koden så.
Avatar billede pcdl Nybegynder
27. april 2008 - 15:38 #8
var maxwords = 250;
var titlewords = 65;

function check_length(obj, cnt, rem, text)
{
    if(text==""){
        document.getElementById("desc").innerHTML="Din beskrivelse her";
        cnt.innerHTML = 0;
    }else{
        var o=document.getElementById("desc");
        text=text.split(" ");
        for(var i=0;i<text.length;i++){
            o.appendChild(document.createTextNode(text[i]+" "));
            if((i+1)%100==0)o.appendChild(document.createElement("br"));
        }
        var ary = obj.value.split("");
        var len = ary.length;
        cnt.innerHTML = len;
        rem.innerHTML = maxwords - len;
        if (len > maxwords) {
            alert("Message in '" + obj.name + "' limited to " + maxwords + " words.");
            ary = ary.slice(0,maxwords-1);
            obj.value = ary.join("");
            cnt.innerHTML = maxwords;
            rem.innerHTML = 0;
            return false;
        }
    }
    return true;
}

function check_title_length(obj1, cnt1, rem1, text1, text2)
{
    if(text1==""){
        document.getElementById("title").innerHTML="Din titel her";
        cnt1.innerHTML = 0;
    }else{
        document.getElementById("title").innerHTML='<a href="Http://' + text2 + '">' + text1;
        var ary = obj1.value.split("");
        var len = ary.length;
        cnt1.innerHTML = len;
        rem1.innerHTML = titlewords - len;
        if (len > titlewords) {
            alert("Message in '" + obj1.name + "' limited to " + titlewords + " words.");
            ary = ary.slice(0,titlewords-1);
            obj1.value = ary.join("");
            cnt1.innerHTML = titlewords;
            rem1.innerHTML = 0;
            return false;
        }
    }
return true;
}

function check_url_length(text1, text2)
{
    if(text1==""){
        document.getElementById("url").innerHTML="Http://Dit-link.dk";
        cnt.innerHTML = 0;
    }else{
        document.getElementById("url").innerHTML='Http://' + text1;
        document.getElementById("title").innerHTML='<a href="Http://' + text1 + '">' + text2;
        return true;
    }
}
Avatar billede roenving Novice
27. april 2008 - 15:45 #9
Et helt andet eksempel:

<script type="text/javascript">
var x = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque lectus elit, sagittis at, accumsan id, dictum et, erat. Etiam non sapien. Quisque aliquet gravida mi. Integer vitae tortor quis wisi scelerisque vestibulum. Duis pulvinar magna non mauris laoreet volutpat. Aenean et purus. Cras accumsan justo sed arcu. Quisque urna. Sed mi. Ut sed nunc at lorem aliquet vulputate. Proin quis nibh. Proin ut dui vitae urna lacinia posuere. Ut vulputate purus facilisis nunc. Morbi ultrices euismod leo. Integer dui tellus, dictum in, viverra at, sagittis id, sem. Donec nonummy, sem eu hendrerit vulputate, nunc urna molestie eros, et semper nunc mi at ipsum. Praesent tempus malesuada felis. Vestibulum iaculis mattis sem. Suspendisse hendrerit, justo nec scelerisque mattis, ipsum lacus rutrum nibh, ac sollicitudin tellus felis eu ligula. Aliquam erat volutpat. Curabitur id magna. Aliquam eu magna id pede viverra varius. Nunc eu augue. Nulla quis ligula ac purus commodo vestibulum. Suspendisse adipiscing. Nullam velit. Integer nibh dolor, euismod non, blandit sed, ultricies vel, velit. Nulla posuere metus vel libero. Vestibulum elementum. Cras at nunc eget turpis tristique ullamcorper. In eget mi. Aliquam quis pede. Curabitur tincidunt est quis quam. Nunc elit nulla, ornare a, tristique eu, imperdiet in, eros. Nunc dolor. Nulla id purus vitae lacus interdum blandit. Donec lorem ante, rutrum eget, nonummy quis, luctus vel, eros. Quisque porttitor felis malesuada elit. Aliquam pretium purus vitae nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam sem. In mattis ipsum id dolor. Vivamus quis neque. Etiam vitae velit. Phasellus interdum, eros sit amet porta rutrum, mi neque ornare diam, et nonummy ipsum eros a dolor. Maecenas ut ligula. Vivamus adipiscing dignissim neque. Cras sit amet sapien. Proin accumsan consequat felis. Nunc pellentesque, nisl vestibulum iaculis rhoncus, mauris enim luctus neque, quis auctor dolor sapien et massa. Donec in lorem vel pede mollis condimentum. Mauris libero. Praesent imperdiet. Nam porttitor nisl ac eros. Nulla sed metus. Duis id quam. Donec id augue. In enim ante, consectetuer in, cursus vitae, tristique sit amet, ipsum. Mauris ullamcorper porta nisl. Morbi pharetra. Proin commodo. Sed facilisis vehicula wisi. Ut malesuada. In hac habitasse platea dictumst. Vivamus auctor. Pellentesque quis massa id nunc ornare varius. Aliquam erat volutpat."
x = x.split(/\b/);

window.onload = function(){
  var txts = [], num = 0, div = document.getElementById("minDiv");
  txts[0] = [];
  for(i=0,im=x.length;im>i;i++){
    if(i%200 == 0 && i != 0){
      div.appendChild(document.createTextNode(txts[num].join("")));
      div.appendChild(document.createElement("br"));
      num++;
      txts[num] = [];
    }
    txts[num].push(x[i]);
  }
  if(i%200 != 0)
    div.appendChild(document.createTextNode(txts[num].join("")));
}
</script>

<div id="minDiv"></div>
Avatar billede roenving Novice
27. april 2008 - 15:46 #10
-- og det bevarer en evt. tegnsætning !-)
Avatar billede w13 Novice
27. april 2008 - 15:58 #11
pcdl>> Det er lidt svært, når man ikke ved, præcis hvordan det fungerer. F.eks. måtte jeg indføre nogle if-sætninger, som tjekkede, om de forskellige beholdere allerede indeholdt tekst, inden jeg kunne bruge koderne. Men mit bud er følgende:

var maxwords = 250;
var titlewords = 65;

function check_length(obj, cnt, rem, text)
{
    if(!document.getElementById("desc").hasChildNodes())document.getElementById("desc").appendChild(document.createTextNode(" "));
    if(!cnt.hasChildNodes())cnt.appendChild(document.createTextNode(" "));
    if(!rem.hasChildNodes())rem.appendChild(document.createTextNode(" "));

    if(text==""){
        document.getElementById("desc").firstChild.nodeValue="Din beskrivelse her";
        cnt.firstChild.nodeValue = "0";
    }else{
        var o=document.getElementById("desc");
        text=text.split(" ");
        for(var i=0;i<text.length;i++){
            o.appendChild(document.createTextNode(text[i]+" "));
            if((i+1)%100==0)o.appendChild(document.createElement("br"));
        }
        var ary = obj.value.split("");
        var len = ary.length;
        cnt.firstChild.nodeValue = len;
        rem.firstChild.nodeValue = maxwords - len;
        if (len > maxwords) {
            alert("Message in '" + obj.name + "' limited to " + maxwords + " words.");
            ary = ary.slice(0,maxwords-1);
            obj.value = ary.join("");
            cnt.firstChild.nodeValue = maxwords;
            rem.firstChild.nodeValue = "0";
            return false;
        }
    }
    return true;
}

function check_title_length(obj1, cnt1, rem1, text1, text2)
{
    if(!document.getElementById("title").hasChildNodes())document.getElementById("title").appendChild(document.createTextNode(" "));
    if(!cnt1.hasChildNodes())cnt1.appendChild(document.createTextNode(" "));
    if(!rem1.hasChildNodes())rem1.appendChild(document.createTextNode(" "));

    if(text1==""){
        document.getElementById("title").firstChild.nodeValue="Din titel her";
        cnt1.firstChild.nodeValue = 0;
    }else{
    if(document.getElementById("title").hasChildNodes())document.getElementById("title").removeChild(document.getElementById("title").firstChild);
        document.getElementById("title").appendChild(document.createElement("a"));
        document.getElementById("title").firstChild.setAttribute("href","Http://" + text1);
        document.getElementById("title").firstChild.firstChild.nodeValue=text2;
        var ary = obj1.value.split("");
        var len = ary.length;
        cnt1.firstChild.nodeValue = len;
        rem1.firstChild.nodeValue = titlewords - len;
        if (len > titlewords) {
            alert("Message in '" + obj1.name + "' limited to " + titlewords + " words.");
            ary = ary.slice(0,titlewords-1);
            obj1.value = ary.join("");
            cnt1.firstChild.nodeValue = titlewords;
            rem1.firstChild.nodeValue = "0";
            return false;
        }
    }
return true;
}

function check_url_length(text1, text2)
{
    if(document.getElementById("title").hasChildNodes())document.getElementById("title").removeChild(document.getElementById("title").firstChild);
    if(!document.getElementById("url").hasChildNodes())document.getElementById("url").appendChild(document.createTextNode(" "));
    if(!cnt1.hasChildNodes())cnt1.appendChild(document.createTextNode(" "));
    if(!rem1.hasChildNodes())rem1.appendChild(document.createTextNode(" "));

    if(text1==""){
        document.getElementById("url").firstChild.nodeValue = "Http://Dit-link.dk";
        cnt.firstChild.nodeValue = 0;
    }else{
        document.getElementById("url").firstChild.nodeValue='Http://' + text1;
        document.getElementById("title").appendChild(document.createElement("a"));
        document.getElementById("title").firstChild.setAttribute("href","Http://" + text1);
        document.getElementById("title").firstChild.firstChild.nodeValue=text2;
        return true;
    }
}

Ved selvfølgelig ikke, om det vil virke.
Avatar billede w13 Novice
27. april 2008 - 16:01 #12
Koden kunne godt gøres noget kortere, hvis man var rigtigt inde i den.
Avatar billede pcdl Nybegynder
27. april 2008 - 16:03 #13
w13 har du en msn? så kan jeg vise dig det hele
Avatar billede w13 Novice
27. april 2008 - 16:05 #14
Jeg er holdt op med at give min msn ud herinde - jeg får simpelthen for mange spørgsmål privat, så jeg foretrækker at hjælpe herinde. Og jeg har egentlig heller ikke tiden til at sætte mig ordentligt ind i et helt system. :)
Avatar billede pcdl Nybegynder
27. april 2008 - 16:05 #15
der er kun et mindre problem med det det er når man skriver noget i den textarea så udskriver den alt hvad der står i textarean + den nye text
Avatar billede w13 Novice
27. april 2008 - 16:08 #16
Ja, det kan godt være, du må holde dig til innerHTML indtil videre.
Avatar billede w13 Novice
27. april 2008 - 16:40 #17
Du kan også prøve med:

var maxwords = 250;
var titlewords = 65;

function check_length(obj, cnt, rem, text)
{
    if(document.getElementById("desc").hasChildNodes())document.getElementById("desc").removeChild(document.getElementById("desc").firstChild);
    if(cnt.hasChildNodes())cnt.removeChild(cnt.firstChild);
    if(rem.hasChildNodes())rem.removeChild(rem.firstChild);

    if(text==""){
        document.getElementById("desc").firstChild.nodeValue="Din beskrivelse her";
        cnt.firstChild.nodeValue = "0";
    }else{
        var o=document.getElementById("desc");
        text=text.split(" ");
        for(var i=0;i<text.length;i++){
            o.appendChild(document.createTextNode(text[i]+" "));
            if((i+1)%100==0)o.appendChild(document.createElement("br"));
        }
        var ary = obj.value.split("");
        var len = ary.length;
        cnt.firstChild.nodeValue = len;
        rem.firstChild.nodeValue = maxwords - len;
        if (len > maxwords) {
            alert("Message in '" + obj.name + "' limited to " + maxwords + " words.");
            ary = ary.slice(0,maxwords-1);
            obj.value = ary.join("");
            cnt.firstChild.nodeValue = maxwords;
            rem.firstChild.nodeValue = "0";
            return false;
        }
    }
    return true;
}

function check_title_length(obj1, cnt1, rem1, text1, text2)
{
    if(document.getElementById("title").hasChildNodes())document.getElementById("title").removeChild(document.getElementById("title").firstChild);
    if(cnt1.hasChildNodes())cnt1.removeChild(cnt1.firstChild);
    if(rem1.hasChildNodes())rem1.removeChild(rem1.firstChild);

    if(text1==""){
        document.getElementById("title").firstChild.nodeValue="Din titel her";
        cnt1.firstChild.nodeValue = 0;
    }else{
    if(document.getElementById("title").hasChildNodes())document.getElementById("title").removeChild(document.getElementById("title").firstChild);
        document.getElementById("title").appendChild(document.createElement("a"));
        document.getElementById("title").firstChild.setAttribute("href","Http://" + text1);
        document.getElementById("title").firstChild.firstChild.nodeValue=text2;
        var ary = obj1.value.split("");
        var len = ary.length;
        cnt1.firstChild.nodeValue = len;
        rem1.firstChild.nodeValue = titlewords - len;
        if (len > titlewords) {
            alert("Message in '" + obj1.name + "' limited to " + titlewords + " words.");
            ary = ary.slice(0,titlewords-1);
            obj1.value = ary.join("");
            cnt1.firstChild.nodeValue = titlewords;
            rem1.firstChild.nodeValue = "0";
            return false;
        }
    }
return true;
}

function check_url_length(text1, text2)
{
    if(document.getElementById("title").hasChildNodes())document.getElementById("title").removeChild(document.getElementById("title").firstChild);
    if(document.getElementById("url").hasChildNodes())document.getElementById("url").removeChild(document.getElementById("url").firstChild);
    if(cnt.hasChildNodes())cnt.removeChild(cnt.firstChild);

    if(text1==""){
        document.getElementById("url").firstChild.nodeValue = "Http://Dit-link.dk";
        cnt.firstChild.nodeValue = 0;
    }else{
        document.getElementById("url").firstChild.nodeValue='Http://' + text1;
        document.getElementById("title").appendChild(document.createElement("a"));
        document.getElementById("title").firstChild.setAttribute("href","Http://" + text1);
        document.getElementById("title").firstChild.firstChild.nodeValue=text2;
        return true;
    }
}
Avatar billede pcdl Nybegynder
27. april 2008 - 17:07 #18
tror den indsætter et break men problemet er at den ikke husker det break næste gang man skriver noget :S
Avatar billede w13 Novice
27. april 2008 - 17:12 #19
Det forstår jeg ikke. Kan jeg se et link?
Avatar billede pcdl Nybegynder
27. april 2008 - 17:17 #20
http://soource.com/control.php koden er test pass test
Avatar billede w13 Novice
27. april 2008 - 17:22 #21
Hvilken side drejer det sig om?
Avatar billede pcdl Nybegynder
27. april 2008 - 17:25 #22
rediger siden
Avatar billede w13 Novice
27. april 2008 - 17:43 #23
Ja, det kan jeg godt se. Måske du bare skal gå tilbage til din originale kode :) Det er lidt svært for mig at finde de fejl.
Avatar billede pcdl Nybegynder
27. april 2008 - 17:43 #24
det her er mit textarea
                <textarea value="" name="Message1" onkeyup="
                return check_length(this,
                document.getElementById('count1'),
                document.getElementById('remaining1'), this.value);"><?php print $row_editwords[description]; ?></textarea>
Avatar billede roenving Novice
28. april 2008 - 12:46 #25
Har du virkelig de linjeskift i koden ?-)

-- for det er ikke særlig smart, prøv i stedet:

<textarea value="" name="Message1" onkeyup="return check_length(this, document.getElementById('count1'), document.getElementById('remaining1'), this.value);"><?php print $row_editwords[description]; ?></textarea>
Avatar billede olebole Juniormester
29. april 2008 - 00:50 #26
<ole>

- og så har jeg - jvnf. kommentaren (27/04-2008 17:07:03) - lidt på fornemmeren, der bør stå:
  <?php print nl2br($row_editwords[description]); ?>

/mvh
</bole>
Avatar billede olebole Juniormester
29. april 2008 - 00:52 #27
- men ved ikke, om jeg har forstået spørgemålet korrekt  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester