Avatar billede flurt Nybegynder
03. februar 2013 - 04:31 Der er 16 kommentarer og
1 løsning

Dynamisk visning af inputfelt i anden skrifttype / størrelse

Hej eksperter.

Nu har jeg ledt nettet tyndt efter dette simple script men kan simpelthen ikke finde svaret.
Jeg ønsker et inputfelt hvor folk kan skrive en tekst. Denne tekst skal så vises på samme side i anden skrifttype og størrelse (stor størrelse der fylder det mest af skærmen)

Lidt i stil med denne, dog skal skrifttypen og størrelsen ændres i den viste tekst

<script type="text/javascript">// <![CDATA[
function update(element)
{
  document.getElementById("dynamic_name").innerHTML = element.value;
}
function changeSize()
{
document.getElementbyId("myDiv").fontSize = "30px";
}
// ]]></script>
<p><input onkeypress="update(this)" type="text" /></p>
<div id="dynamic_name">&nbsp;</div>



Enten dynamisk (udfyldes automatisk når man skriver, eller når man trykker på en knap.

Jeg håber at jeg har gjort mig forståelig og håber der er nogle som lige kan hjælpe mig ud af denne.
Avatar billede flurt Nybegynder
03. februar 2013 - 04:35 #1
<script type="text/javascript">// <![CDATA[
function update(element)
{
  document.getElementById("dynamic_name").innerHTML = element.value;
}
// ]]></script>
<p><input onkeypress="update(this)" type="text" /></p>
<div id="dynamic_name">&nbsp;</div>

Det var denne jeg mente. Den anden virker ikke.
Avatar billede januskh Nybegynder
03. februar 2013 - 11:27 #2
Hvad med dette eksempel:

<script type="text/javascript">// <![CDATA[
function update(element)
{
  document.getElementById("dynamic_name").innerHTML = element.value;
}
// ]]></script>
<p><input onkeyup="update(this)" type="text" /></p>
<div id="dynamic_name">&nbsp;</div>

Det eneste jeg har gjort er at udskifte din event onkeypress til onkeyup.
Avatar billede flurt Nybegynder
03. februar 2013 - 12:04 #3
Hej Januskh.

Det gør ingen foreskel her? Det giver da det samme?
Jeg tror måske jeg har formuleret mig forkert.

Det jeg ikke kan finde ud af er at ændre font og størrelse på den viste tekst :)
Avatar billede januskh Nybegynder
03. februar 2013 - 12:06 #4
Må der bruges jQuery?
Avatar billede flurt Nybegynder
03. februar 2013 - 12:10 #5
Jep så længe det bare fungere.
Det er blot til illustration således at man kan få en forhåndsvising af et tekst produkt.
Avatar billede januskh Nybegynder
03. februar 2013 - 12:11 #6
Alternativt:

<script type="text/javascript">// <![CDATA[
function update(element)
{
  document.getElementById("dynamic_name").innerHTML = element.value;
  document.getElementById("dynamic_name").setAttribute('style', 'font-size:30px');
}
// ]]></script>
<p><input onkeyup="update(this)" type="text" /></p>
<div id="dynamic_name">&nbsp;</div>
Avatar billede flurt Nybegynder
03. februar 2013 - 12:14 #7
Se det er lækkert. Hvordan ville scriptet se ud med anden skrift type også?
Beklager mine dumme spørgsmål jeg har bare ingen erfaring indenfor Javascript what so ever
Avatar billede januskh Nybegynder
03. februar 2013 - 12:19 #8
Problemet med at gøre det på denne her måde er at; har du sat style-atrributten på html-taget, så vil en setAttribute overskrive. Så den fulde streng skal angives hver gang.
Med jQuery vil man nemt kunne addressere sig ned på den enkelte style i style attributten.

Men det letteste for dig nu og her vil være at gøre det således:

  document.getElementById("dynamic_name").setAttribute('style', 'font-size:30px;font-family:"Times New Roman"');
 
eller

  document.getElementById("dynamic_name").setAttribute('style', 'font-size:30px;font-family:"Arial"');
Avatar billede januskh Nybegynder
03. februar 2013 - 12:24 #9
Her er samme løsning, hvor jeg bare har benyttet jQuery:

<html>
   
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    </head>
   
    <body>
   
<script type="text/javascript">// <![CDATA[
function update(element)
{
    $('#dynamic_name').html($(element).val());
    $('#dynamic_name').css('font-size','30px');
    $('#dynamic_name').css('font-family','Arial');

}
// ]]></script>
<p><input onkeyup="update(this)" type="text" /></p>
<div id="dynamic_name">&nbsp;</div>
   
</body>
</html>
Avatar billede flurt Nybegynder
03. februar 2013 - 12:24 #10
Okay på den måde.
Jamen dette er nu testet og fungere ihvertfald efter hensigten. Det er simpelthen dejligt at du var så hjælpsom så hurtigt.


Jeg har et lille side spørgsmål. De skrifttyper man bruger ligger de på den enkelte computer eller ligger de online?
For det virker fint efter hensigten her hos mig, men hvis nu en besøgene bruger denne UDEN den ønskede skrifttype installere viser den så alligevel som jeg ser det, eller blot som en Arial?
Avatar billede januskh Nybegynder
03. februar 2013 - 12:29 #11
Fonte ligger på en enkelte maskine/PC/Mac/iPad eller andet slags device. Derfor kan man i mange tilfælde blive nødt til at lave en prioriteret rækkefølge af fonte, som man gerne vil have at ens element vises med. Så findes første fonten ikke, så vil den forsøge den næste eller den næste i rækkefølgen:

document.getElementById("dynamic_name").setAttribute('style', 'font-size:30px;font-family:"Arial", "Times New Roman", "Verdana"');

Google har dog et api med Webfonte, som kan benytte, hvis man vil investere lidt penge i det:
http://www.google.com/webfonts
Avatar billede flurt Nybegynder
03. februar 2013 - 12:36 #12
Okay. Har søgt lidt på google omkring Embed custom font for website og kommet frem til denne CSS kode.

@font-face
{
font-family : "give it a name";
src: url("your path/font.ttf")
}

Vil dette virke så folk uden skrifttypen installeret stadigvæk kan se det som det skal ses?
Avatar billede januskh Nybegynder
03. februar 2013 - 12:38 #13
Ja, det skulle være pointen med det. Men jeg har ikke den store erfaring med brugen af disse.
Avatar billede flurt Nybegynder
03. februar 2013 - 12:40 #14
Okay jeg prøver at søge lidt videre.
1000 tak for din hjælp. God søndag.
Avatar billede januskh Nybegynder
03. februar 2013 - 12:46 #15
Velbekomme... og god web-rejse samt god søndag :)
Avatar billede flurt Nybegynder
03. februar 2013 - 13:17 #16
Tak, det er nu lykkedes både på smartphone og web at lave en speciel font som folk kan se uden at have den installeret :)
Avatar billede olebole Juniormester
03. februar 2013 - 13:28 #17
<ole>

setAttribute skal man passe lidt på, for den virker ikke altid, som nogle måske kunne forvente  =)

Der er faktisk forskel på at sætte en attribut et HTML-element - og så at sætte en property på det JavaScript object, HTML-elementet implementerer.

Historisk har style objektet været et object på JavaScript objektet - og kunne derfor ikke sættes med setAttribute. Den sidste browser, der lavede det om, var IE ... i version 8. Skal IE7 supporteres, skal der altså bruges syntaksen:

ELEMENT.style.fontSize = "30px";

Et andet eksempel er value attributten/property'en. Den er en property på elementets style object, og brugerændringer i feltets indhold kan ikke aflæses med getAttribute[/i].

Aflæser man value attributten, skal det, som udvikleren skrev i HTML-koden, returneres - ikke elementets aktuelle værdi. Værdien skal aflæses med dot notation.

Af mange grunde - men bl.a. af denne - skal man passe rigtig godt på med brugen af [b]innerHTML
. Prøv f.eks. denne kode og se, hvad der sker, når man skriver noget nyt i feltet og trykker på knappen:

<script type="text/javascript">
function foo() {
    var str = "<p>En ekstra tekst indskrevet med innerHTML</p>";
    document.getElementById("bar").innerHTML += str;
}
</script>

<div id="bar">
    <input name="fooBar" value="Skriv noget ...">
</div>

<button onclick="foo()">TEST</button>

Uanset, hvad du har skrevet i feltet, vil der stå "Skriv noget ...", efter du har trykket på knappen.

Det skyldes, at DIV'ets innerHTML bliver aflæst. Dernæst bliver den overskrevet med den aflæste innerHTML - plus et ekstra P element. Sagen er, at når innerHTML'en aflæses, så aflæses INPUT elementets value attribut - ikke JS-objektets value property.

Derudover går XHTML ikke særlig godt i spænd med innerHTML - og document.write er helt utænkelig. Med mindre, man bruger XML blandet ind i HTML-koden, er der ingen fornuftig grund til at bruge XHTML1.0 eller XHTML1.1. Da W3C endvidere droppede standarden for flere år siden, er der næppe den store fremtid i dén standard.

XHTML1.0 Transitional var som de andre af W3C's Transitional flavors kun ment som en kort overgangs-/øveversion, som burde have været udfaset for mindst 10 år siden. IE har aldrig understøttet XHTML1.1, men vil i stedet tilbyde brugeren at downloade siden  =)

/mvh
</bole>
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