Avatar billede soeren_soelv Novice
19. januar 2019 - 22:49 Der er 6 kommentarer

Sætte værdi i 2 Marquee via JavaScript

Hej

Jeg er ved at lave en html side, hvor jeg har 2 x marquee. Jeg sætter via Javascript værdierne for Marqueen, så som

                marquee.height = input1.value;
        marquee.width = input2.value;
            marquee.scrollAmount = input3.value;
            marquee.direction = input4.value;
            marquee.vspace = input5.value;
            marquee.hspace = input6.value;

Disse input virker dog kun for den første marquee. Jeg har prøvet at se om jeg kunne løse det ved at bruge               

document.getElementById('myMarquee').style.backgroundColor = '#'+ input9.value;

... men der er mange værsier i marqueen som ikke understøttes af .style.


Håber der er en der kan hjælpe mig videre.

PFT
Avatar billede Slater Ekspert
19. januar 2019 - 23:39 #1
marquee er et forældet element, der ikke er officielt understøttet længere. Den bør ikke bruges, du kan ikke forvente at den virker på alle browsere, og understøttelsen kan helt forsvinde når som helst.

Ud over det, er der ikke noget der skriger 1990 amatørsite så meget som at bruge marquee. Det skulle da lige være animerede gif'er og midi baggrundsmusik.
Avatar billede soeren_soelv Novice
20. januar 2019 - 19:55 #2
Hej Slater

De input du kommer med er jeg fuldt ud opdateret på, men i mit tilfælde giver brugen af marquee mening.

Har du dog et indspark til en løsning på mit problem?
Avatar billede Slater Ekspert
20. januar 2019 - 21:30 #3
Jamen det giver jo tydeligvis ikke mening, når du netop har et problem med hvad du gerne vil. Marquee-elementet understøtter ikke nødvendigvis Javascript og CSS-egenskaber som andre elementer, fordi det er uddateret og ikke officielt understøttet.
Som du selv har opdaget virker backgroundColor f.eks. ikke på det, selvom det gør på andre elementer.

Det virker dog stadig at injecte CSS-regler, i hvert fald på Firefox som jeg lige har testet på. F.eks.:

<marquee id="test">Fisk</marquee>

<script>
let style = document.createElement('style');
document.head.appendChild(style);
let sheet = style.sheet;
sheet.insertRule('#test { background-color: red; }');
</script>

- Men det kan også holde op med at virke når som helst, plus det kræver lidt ekstra arbejde at opdatere det flere gange, da du først skal fjerne den gamle regel.

Og du kan bruge element.setAttribute('vspace', 100); til at sætte de andre ting.

Jeg mener stadig ikke der findes et tilfælde hvor det giver mening. Hvis du absolut skal lave noget tekst der scroller, kan du lave din egen marquee med Javascript eller CSS-animationer, som både vil virke og se langt bedre ud.
Avatar billede keysersoze Guru
21. januar 2019 - 10:05 #4
Hvis en marquee er vigtig så find en løsning i javascript i stedet for.
Avatar billede Slater Ekspert
21. januar 2019 - 10:18 #5
#4: Sådan set ingen grund til at blande Javascript ind i det. Man kan lave en fin marquee i ren CSS meget simpelt, f.eks. sådan:
https://jsfiddle.net/bq2w5cfj/

I forhold til en <marquee> har den langt mere glidende animation, GPU-understøttelse, og kan styles og scriptes på alle almindelige måder, fordi det bare er en div.
Avatar billede keysersoze Guru
21. januar 2019 - 11:46 #6
#5 jah, såfremt den skal være så simpel som i dit tilfælde, jeg læser bare spørgsmål som at den skal være lidt mere dynamisk. Men hvem ved :)
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

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