/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Udskrive id
Fra : Dennis Munding


Dato : 18-07-07 20:29

Hej NG!

Jeg sidder med et lille problem/ønske, som jeg håber, at I kan hjælpe mig
med...

Jeg kunne godt tænke mig at udskrive en bestemt id, når brugeren klikker på
et link.

Eks.:

<div id="print_version">
<p>En masse tekst...</p>
</div>

<a href="javascript:Udskriv()">Udskriv</a>

Hvor js-delen ser således ud:

function Udskriv() {
window.print();
}

Kan man på en eller anden måde flette id'et på min div (print_version) ind i
scriptet, så det kun er indholdet af netop den div, der bliver udskrevet?
Noget med get.element.byId('print_version')....

Jeg har kun meget minimal forstand på javascript, så I skal skære det meget
ud i pap...

På forhånd mange tak for hjælpen!


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...


 
 
Jørgen Farum Jensen (18-07-2007)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 18-07-07 22:50

Dennis Munding skrev:
> Hej NG!
>
> Jeg sidder med et lille problem/ønske, som jeg håber, at I kan hjælpe
> mig med...
>
> Jeg kunne godt tænke mig at udskrive en bestemt id, når brugeren klikker
> på et link.
>
> Eks.:
>
> <div id="print_version">
> <p>En masse tekst...</p>
> </div>
>
> <a href="javascript:Udskriv()">Udskriv</a>
>
> Hvor js-delen ser således ud:
>
> function Udskriv() {
> window.print();
> }
>
> Kan man på en eller anden måde flette id'et på min div (print_version)
> ind i scriptet, så det kun er indholdet af netop den div, der bliver
> udskrevet?
> Noget med get.element.byId('print_version')....
>
> Jeg har kun meget minimal forstand på javascript, så I skal skære det
> meget ud i pap...

Der kræves ikke noget kendskab til JavaScript
for at lave et stylesheet beregnet til udskrift:

<link rel=stylesheet" type="text/css"
media="print" href="print.css">

I dette stylesheet sætter du
display:none på alle de elementer,
du ikke vil have skrevet ud, og passende
marginer på det du vil have skrevet ud.
--
Med venlig hilsen
Jørgen Farum Jensen


Dennis Munding (19-07-2007)
Kommentar
Fra : Dennis Munding


Dato : 19-07-07 03:24

Hej Jørgen!
"Jørgen Farum Jensen" skrev i en meddelelse:'
> Dennis Munding skrev:
>> Hej NG!
>>
>> Jeg sidder med et lille problem/ønske, som jeg håber, at I kan hjælpe mig
>> med...
>>
>> Jeg kunne godt tænke mig at udskrive en bestemt id, når brugeren klikker
>> på et link.
>
> Der kræves ikke noget kendskab til JavaScript
> for at lave et stylesheet beregnet til udskrift:
>
> <link rel=stylesheet" type="text/css"
> media="print" href="print.css">
>
> I dette stylesheet sætter du
> display:none på alle de elementer,
> du ikke vil have skrevet ud, og passende
> marginer på det du vil have skrevet ud.

Den metode kender jeg så til gengæld godt...

Mit problem omhandler en div med en kopi af indholdet fra en formular, som
brugeren har sendt, og så er mit ønske at brugeren selv skal kunne bestemme,
om det kun skal være kopien, der bliver udskrevet, eller om resten af siden
også skal udskrives.
Hvis jeg "slukker" for de resterende elementer, bortfalder valget jo...

Så ved jeg godt, at brugeren bare kan markere indholdet af kopien og
derefter vælge udskriv markering, men min erfaring fortæller, at der ikke er
ret mange, som er klar over den mulighed...

Jeg kan forstå på dit svar, at min forespørgsel ikke kan lade sig gøre...?


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...


Jørgen Farum Jensen (19-07-2007)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 19-07-07 11:51

Dennis Munding skrev:

> Mit problem omhandler en div med en kopi af indholdet fra en formular,
> som brugeren har sendt, og så er mit ønske at brugeren selv skal kunne
> bestemme, om det kun skal være kopien, der bliver udskrevet, eller om
> resten af siden også skal udskrives.
> Hvis jeg "slukker" for de resterende elementer, bortfalder valget jo...
>
> Så ved jeg godt, at brugeren bare kan markere indholdet af kopien og
> derefter vælge udskriv markering, men min erfaring fortæller, at der
> ikke er ret mange, som er klar over den mulighed...
>
> Jeg kan forstå på dit svar, at min forespørgsel ikke kan lade sig gøre...?

Jeg kan ikke lige se det for mig, hvad det
er du vil opnå, men her er en tanke: Stylesheet
switching.

Når brugeren /har/ sendt sin formular, hvordan
opstår så indholdet i den div, du skriver om -
nyt indhold på siden, en ny side eller hvad?

--
Med venlig hilsen
Jørgen Farum Jensen
http://webdesign101.dk
Webdesign håndbøger: http://733.dk

Dennis Munding (19-07-2007)
Kommentar
Fra : Dennis Munding


Dato : 19-07-07 12:34

Hej Jørgen!
"Jørgen Farum Jensen" skrev i en meddelelse:
> Dennis Munding skrev:
[SNIP]
>> Jeg kan forstå på dit svar, at min forespørgsel ikke kan lade sig
>> gøre...?
>
> Jeg kan ikke lige se det for mig, hvad det
> er du vil opnå, men her er en tanke: Stylesheet
> switching.
>
> Når brugeren /har/ sendt sin formular, hvordan
> opstår så indholdet i den div, du skriver om -
> nyt indhold på siden, en ny side eller hvad?

Det opstår som nyt indhold på samme side, hvor der i forvejen er en formular
og nogle billeder.
Jeg kan selvfølgelig sætte formularen til display:none; i mit print-style,
hvilket er min plan b, men hvis det kunne laves på en anden måde, vil jeg
hellere det, da jeg så samtidig kan lære endnu en ny ting...

Men for at skitsere det lidt - når formularen er godkendt og sendt, ser
siden således ud ( i grove træk):

<div id="kopi">
<p>Kopi af formular-indhold</p>
</div>
<div id="print-knap"> /* Er særskilt, så den ikke bliver printet ud sammen
med kopien, hvis min forespørgsel kan lade sig gøre... */
<a href="javascript:print.js()">Print</a>
</div>

<div id="formular">
/* formular-indhold */
</div>

<div id="billeder">
<img src="..." />
....
</div>


Så det er div#kopi, som jeg gerne vil have skrevet ud alene...


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...


Jørgen Farum Jensen (19-07-2007)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 19-07-07 13:48

Dennis Munding skrev:

> Det opstår som nyt indhold på samme side, hvor der i forvejen er en
> formular og nogle billeder.

Hvordan? document.createElement(), innerHTML?
Er indholdet til stede i kildekoden efter formularen
er indsendt?


--
Med venlig hilsen
Jørgen Farum Jensen
http://webdesign101.dk
Webdesign håndbøger: http://733.dk

Dennis Munding (19-07-2007)
Kommentar
Fra : Dennis Munding


Dato : 19-07-07 14:33

Hej Jørgen!
"Jørgen Farum Jensen" skrev i en meddelelse:
> Dennis Munding skrev:
>
>> Det opstår som nyt indhold på samme side, hvor der i forvejen er en
>> formular og nogle billeder.
>
> Hvordan? document.createElement(), innerHTML?
> Er indholdet til stede i kildekoden efter formularen
> er indsendt?

Jeg er ikke sikker på, at jeg har forstået dig korrekt, men jeg tror, at det
må blive "nej" til det første - det bliver genereret af noget php-kode.
Og da jeg ikke umiddelbart mener, at man kan få udskrevet en side via php,
faldt mit valg på javascript...

Altså:
Før brugeren klikker på "Send" består siden af en div indeholdende en
formular, og en div indeholdende billeder.
Hvis formularen er udfyldt korrekt, bliver brugeren præsenteret for den
samme side igen, men med den forskel, at der nu er en div indeholdende en
kopi af den afsendte formular(mail) ovenover de 2 andre div'er...

Og det er denne div - og kun den - som jeg gerne vil udskrive ved hjælp af
enten javascript eller php. Men da jeg som nævnt ikke kender en metode at
udskrive på med php, faldt valget på javascript...

Håber du kan følge mig...?


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...


Lasse Reichstein Nie~ (19-07-2007)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 19-07-07 19:18

"Dennis Munding" <mail@invalid.dk> writes:

> Jeg kunne godt tænke mig at udskrive en bestemt id, når brugeren
> klikker på et link.

Som jeg forstår dine andre svar, så vil du KUN have det element
udskrevet, og ikke andet.

Det allernemmeste er at åbne et nyt vindue med kun det ønskede
i. Det kræver dog nok en tur til serveren.

Alternativt kan man have det der skal udskrives i en iframe, og
så udskrive den. Det kræver så frames, som ellers ikke er en
god ide.

Hvis man insisterer på at fikse det så kun div'en er synlig på
udskrift, så skal der mere snedighed til.

> <div id="print_version">
> <p>En masse tekst...</p>
> </div>
>
> <a href="javascript:Udskriv()">Udskriv</a>

Man skal aldrig(!) skrive "javascript:".
Når man laver links af denne type, så tror browseren at man er
på vej væk fra siden, og nogle ting holder op med at virker.
Skriv i stedet:
<a href="sideDerForklarerAtJSSkalVæreSlåetTil.html"
onclick="udskriv();return false;">Udskriv</a>

> Kan man på en eller anden måde flette id'et på min div (print_version)
> ind i scriptet, så det kun er indholdet af netop den div, der bliver
> udskrevet?

Prøv:

<style type="text/css" media="print">
.nonprint { visibility: hidden;
}
.print {visibility: visible;
}
</style>
<script type="text/javascript">
function printDiv(id) {
var div = document.getElementById(id);
document.body.className = "nonprint";
div.className = "print";
window.print();
div.className = document.body.className = "";
}
</script>

<body> ...
<div id="foo">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.
</div>
<input type="button" value="Udskriv" onclick="printDiv('foo')">
...
</body>

Det har så det kedelige problem at det ikke virker i Internet Explorer.


En mere hårdhændet metode er (med samme html som ovenfor):

<style type="text/css" media="print">
.nonprint { display: none; }
</style>
<script type="text/javascript">
function printDiv(id) {
var div = document.getElementById(id);
addSiblingsClass(div,"nonprint");
window.print();
removeSiblingsClass(div,"nonprint");
}
function traverseSiblings(elem, action) {
while (elem != document.body) {
var parent = elem.parentNode;
for(var chld = parent.firstChild; chld; chld = chld.nextSibling) {
if (chld != elem) {
if (chld.nodeType == 3) {
var span = document.createElement("span");
parent.insertBefore(span,chld);
span.appendChild(chld);
chld = span;
}
action(chld);
}
}
elem = parent;
}
}
function addSiblingsClass(elem, className) {
traverseSiblings(elem, function(sibling) {
if (sibling.className) {
var classes = sibling.className.split(/\s+/);
classes.push(className);
sibling.className = classes.join(" ");
} else {
sibling.className = className;
}
});
}
function removeSiblingsClass(elem, className) {
traverseSiblings(elem, function(sibling) {
if (sibling.className) {
var classes = sibling.className.split(/\s+/);
for(var i = 0; i < classes.length;) {
var cl = classes[i];
if (cl == className) {
classes.splice(i,1);
} else {
i++;
}
}
sibling.className = classes.join(" ");
}
});
}
</script>

Den finder alle elementer der er ved siden af div'en, på alle niveauer
opad i HTML'en, og siger at de ikke skal printes. Så fjerner den det
igen efter at man har printet.

Jeg vil stadig anbefale en server-side-løsning, hvor man sender en ny
side med bare det der skal printes. Det er uligt meget nemmere.

Held og lykke
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Dennis Munding (19-07-2007)
Kommentar
Fra : Dennis Munding


Dato : 19-07-07 20:34

Hej Lasse!
"Lasse Reichstein Nielsen" skrev i en meddelelse:
> Som jeg forstår dine andre svar, så vil du KUN have det element
> udskrevet, og ikke andet.

Det er korrekt forstået...

> Det allernemmeste er at åbne et nyt vindue med kun det ønskede
> i. Det kræver dog nok en tur til serveren.

Det bliver nok mit valg - det er jo så moderne...

> Alternativt kan man have det der skal udskrives i en iframe, og
> så udskrive den. Det kræver så frames, som ellers ikke er en
> god ide.

Kasseret!

> Hvis man insisterer på at fikse det så kun div'en er synlig på
> udskrift, så skal der mere snedighed til.

[SNIP - lang udførlig forklaring...]

> Det har så det kedelige problem at det ikke virker i Internet Explorer.

Og der "tiltede" den så - går nok ikke uden IE - der er trods alt stadig
nogle få mennesker, som bruger den... ;-p

> En mere hårdhændet metode er (med samme html som ovenfor):

[SNIP - endnu en lang og udførlig forklaring...]

> Den finder alle elementer der er ved siden af div'en, på alle niveauer
> opad i HTML'en, og siger at de ikke skal printes. Så fjerner den det
> igen efter at man har printet.

Smart! Om ikke andet, så vil jeg lige prøve det af - men det bliver først
imorgen - øjenlågene er ved at være tunge...

> Jeg vil stadig anbefale en server-side-løsning, hvor man sender en ny
> side med bare det der skal printes. Det er uligt meget nemmere.

Den har jeg "in mente"....

> Held og lykke

Mange tak!
Og tusind tak for de udførlige forklaringer - jeg gennemlæser dem lige igen
med et par friske øjne...


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...


Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste