I want to be able to control marquee behavior with buttons using jQuery.
For example, I create the following buttons and when I click each of them:
1) Start (class=btnStart) => the marquee starts
2) Stop (class=btnStop) => the marquee stops
3) Back (class=btnBack) => the marquee move backward
4) Right (class=btnRight) => the marquee moves to right
5) Fast (class=btnFast) => the marquee moves faster
6) Slow (class=btnSlow) => the marquee moves slower
<body>
<div>
<marquee>Lots of contents here, scrolling right to left by default</marquee>
</div>
<div>
<button class="btnStart">Start</button>
<button class="btnStop">Stop</button>\
</div>
<script>
$(function (){
$(".btnStop").click(function (){
$("marquee").stop();// it does not work
});
$(".btnFast").click(function (){
$("marquee").attr("scrollamount","5"); // doesnt change speed
});
});
</script>
</body>
.start()
and .stop()
methods works only on javascript
objects.
$('marquee')
returns a jquery object but you can get the DOM element using indexes.
$('marquee')[0]
returns the HTML element you selected.
You can use $('marquee')[0].start()
or document.getElementById('marquee').start()
.
let marquee=document.getElementById('marquee');
$('#btnRight').click(function(){
marquee.setAttribute('direction','right');
marquee.start();
});
$('#btnLeft').click(function(){
marquee.setAttribute('direction','left');
marquee.start();
});
$('#btnStop').click(function(){
marquee.stop();
});
$('#btnStart').click(function(){
marquee.start();
});
$('#btnFast').click(function(){
marquee.setAttribute('scrollamount',30);
marquee.start();
});
$('#btnSlow').click(function(){
marquee.setAttribute('scrollamount',2);
marquee.start();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<marquee id="marquee" behavior="scroll" scrollamount="10">Hello</marquee>
<button id="btnRight">Right</button>
<button id="btnLeft">Left</button>
<button id="btnStart">Start</button>
<button id="btnStop">Stop</button>
<button id="btnFast">Fast</button>
<button id="btnSlow">Slow</button>