Avatar billede boris Mester
10. april 2004 - 17:23 Der er 25 kommentarer og
2 løsninger

Lange ord og cellebredde

Hvordan løser man bedst problemet:
En <td> er sat til f.eks. 80px bredde.
Pludselig er der en eller anden idiot som skriver (f.eks.):
sporvognsskinneskidtskrabertillidsmandsmødedagsordenpunkt.

- Hvorefter hele tabellen/siden skrider

Løsningsforslag?
Avatar billede roenving Novice
10. april 2004 - 17:28 #1
Sæt mellemrum ind, hvis ordene er for lange !-)
Avatar billede boris Mester
10. april 2004 - 17:41 #2
Hvordan foreslår du at jeg skal sætte mellemrum ind?
Avatar billede thesurfer Nybegynder
10. april 2004 - 17:46 #3
Man kunne splitte teksten op ved " ". Hvis arrayen indholder "ord" der er længere end X antal tegn, juster ordet til X antal tegn, og indsæt et mellemrum, og derefter checkes det næste ord i arrayen :-)

Lyder meget simpelt, ik? ;-)
Avatar billede thesurfer Nybegynder
10. april 2004 - 17:47 #4
Mener faktisk at jeg lavede et ligende script, bare i ASP..
Avatar billede roenving Novice
10. april 2004 - 17:54 #5
<script type="text/javascript">
function delLangeOrd(txt){
return txt.replace(/(\w{12,})/g,"$1 ");//Alle ord over 12 bogstaver deles i klumper af 12 ...
}
</script>
Avatar billede roenving Novice
10. april 2004 - 17:56 #6
Hov, nej, den deler ord, som er mere end 12 bogstaver efter de 12 ...

, skal fjernes mellem {}, så bliver det delt i småbidder !-)
Avatar billede thesurfer Nybegynder
10. april 2004 - 17:58 #7
Ikke helt dårligt.. men hvordan angiver man hvor lange ordene må være?
Avatar billede boris Mester
10. april 2004 - 18:00 #8
Men betyder det virkelig, at man ikke kan få et element i html til at undgå at svulme op når der kommer store ord?
Det er da enormt bøvlet at man skal programmere sig igennem hele teksten.
Avatar billede thesurfer Nybegynder
10. april 2004 - 18:01 #9
sådan her?:
return txt.replace(/(\w{0,4})/g,"$1 "); // max 4 tegn per ord
Avatar billede thesurfer Nybegynder
10. april 2004 - 18:02 #10
boris>
- Hvad mener du?
- Hvordan skriver "idioten" teksten?
Avatar billede thesurfer Nybegynder
10. april 2004 - 18:05 #11
boris> Smid det her i en html fil, og se hvordan det virker:

<span id="tekstfeltet">
sporvognsskinneskidtskrabertillidsmandsmødedagsordenpunkt
</span>

<script type="text/javascript">
function delLangeOrd(txt){
return txt.replace(/(\w{0,4})/g,"$1 "); // max 4 tegn per ord
}

tekstfeltet.innerHTML = delLangeOrd(tekstfeltet.innerHTML);
</script>
Avatar billede roenving Novice
10. april 2004 - 18:06 #12
>>thesurfer

Du matcher alle forekomster af 0-4 ord-tegn, det er vel næppe din mening !-)

delLangeOrd-funktionen skal køres een gang mod teksten ...

-- og problemet er, at tableData-elementer er beregnet til at systematisere data, ikke formattere, det kan gøres med div'er inde i, men er ofte ikke hensigtsmæssigt !o]
Avatar billede roenving Novice
10. april 2004 - 18:08 #13
>>thesurfer

prøv også:

<span id="tekstfeltet">
Det var et lille sporvognsskinneskidtskrabertillidsmandsmødedagsordenpunkt
</span>
Avatar billede thesurfer Nybegynder
10. april 2004 - 18:09 #14
hehehe.. kan godt se hvad du mener.. ;-)
Men, fatter intet af RegExp :-)
Avatar billede roenving Novice
10. april 2004 - 18:18 #15
{tal} matcher tal tegn
{tal,} matcher tal eller flere tegn
{tal1,tal2} matcher mindst tal1 og højest tal2 tegn

-- og hvor der i den oprindelige står {12,} skal man angive det maksimale antal bogstaver, som der er plads til, prøv f.eks. med en stribe w'er som test ...

-- og hvis man skal have alle mulige special-tegn med kan man:

<script type="text/javascript">
function delLangeOrd(txt){
  var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
  var regexp = new RegExp("(["+t+"]{12})","gi");//Alle ord over 12 bogstaver deles i klumper af 12 ...
  return txt.replace(regexp,"$1 ");
}
</script>
Avatar billede thesurfer Nybegynder
10. april 2004 - 18:21 #16
LOL!!
Hvad er det her "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ"?? :-)
Avatar billede thesurfer Nybegynder
10. april 2004 - 18:22 #17
..de skal lige siges, at det virker fint.
Avatar billede roenving Novice
10. april 2004 - 18:31 #18
Det er en liste over de special-bogstaver, man kan støde ind i i en tekst, som er skrevet i Danmark, da vi som regel respekterer andre sprogs bogstaver, og så er æøå også med !-)
Avatar billede boris Mester
10. april 2004 - 18:41 #19
Jeg tror nok jeg fandt en løsning som lige akkurat gør det som jeg vil have den til uden at lave tekstbehandling.
Det er meget, meget enkelt og suger ikke vand.
Mærkeligt nok kan man ikke lave overflow:hidden på en <td>, men man kan på en <div>.

Her er det:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Systemkritisk analyse af verbalkvantitiv fejlhåndtering</title>
    </head>

<body>
<table width="300" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#ff00ff" width="150">Hallo</td>
<td bgcolor="#fff0dd" width="150">
<div style="width:150px;overflow:hidden;background-color:red;">
Kammerater!<br> vi skriver en masse ævl men det er på tide vi udvikler vort sprog.
sporvognsskinneskidtskrabertillidsmandsmødedagsordenpunkt - nej det ord var for langt osv osv</div>
</td>
</tr>

</table>


</body>
</html>
Avatar billede roenving Novice
10. april 2004 - 18:46 #20
Ja, det var jo også den jeg pegede på som alternativ (roenving@ 18:06:47 !-)

-- og delLangeOrd suger ikke vand, du vil, medmindre du har kilobyte lange sætninger, overhovedet ikke kunne registrere at den regexp kører ...
Avatar billede boris Mester
10. april 2004 - 20:20 #21
Beklager meget, jeg overså lige de ord om div.

Læg
Avatar billede boris Mester
10. april 2004 - 20:23 #22
nogle svar, tak.
Men hvis jeg ville vælge at bruge javascript til orddeling, hvordan gør jeg det så nemmest, når jeg fra serveren udskriver et antal ord/linier, som skal gennem en javascript funktion hos klienten?
Avatar billede roenving Novice
10. april 2004 - 21:16 #23
Det gør du nemmest på serveren !-)

Både php og vbscript har integreret brugen af regexps, så det er ikke så forskelligt, du kan gå ind i regexp-kategorien og finde den nøjagtige syntaks til dit scripting-sprog ...

Hvis du synes det er lettere at bruge den nuværende javascript-ting kan du:

<script type="text/javascript">
var txt = "<%=rs("shout")%>";
document.getElementById('TABELCELLEID').innerHTML = delLangeOrd(txt);
function delLangeOrd(txt){
  var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
  var regexp = new RegExp("(["+t+"]{12})","gi");//Alle ord over 12 bogstaver deles i klumper af 12 ...
  return txt.replace(regexp,"$1 ");
}
</script>


-- og grunden til at jeg ikke fremhævede, at man kunne bruge divs var, at man ganske ofte får en uhensigtsmæssighed ud af det, f.eks. som på forsiden her, hvor 'Sagt om Eksperten'-boksen oftest er noget vrøvl, fordi en del af en sætning mangler ...

-- og ellers velbekomme '-)
Avatar billede boris Mester
11. april 2004 - 08:04 #24
evt også et svar fra thesurfer?
Jeg venter lidt
Avatar billede thesurfer Nybegynder
11. april 2004 - 17:59 #25
OK.. hermed et svar fra mig :-)
Avatar billede roenving Novice
11. april 2004 - 19:29 #26
-- og tak for points ;~}
Avatar billede thesurfer Nybegynder
11. april 2004 - 20:15 #27
Takker for points :-)
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