Two solutions, depending on whether you want to work directly on the text box or make use of a button to trigger the update.
Anyway, to change the animation speed, you need to change the attribute value dur
in the element animateTransform
.
For this purpose, the simplest is to assign a id
to this element to quickly identify it in the DOM as examples below.
Solution 1
Directly in input, we can add an event change
which will execute code whenever it is changed.
Example also available on Jsfiddle.
var input = document.getElementById("input_number");
input.addEventListener("change", function handler(e) {
document.getElementById("animacao").setAttribute('dur', input.value);
});
<svg width="400px" heigth="400px">
<rect ry="0" rx="0" x="100" y="100" width="50" height="50" fill="blue" id="rect">
<animateTransform id="animacao" attributeType="xml" attributeName="transform" type="rotate" from="0 125 125" to="360 125 125" dur="2" repeatCount="indefinite" />
</rect>
</svg>
<input type="number" id="input_number" name="input_number" />
Solution 2
Using a button to update the chosen value for the new animation duration, we will attach an click
button and execute a code snippet whenever it receives a click
.
Example also available on Jsfiddle.
// Adicionar evento de clique ao botão
document.getElementById("alterar").addEventListener("click", handler);
// função chamada quando clicamos no botão
function handler(e) {
// apanhar nova duração
var novaDuracao = document.getElementById("input_number").value;
// definir nova duração
document.getElementById("animacao").setAttribute('dur', novaDuracao);
}
<svg width="400px" heigth="400px">
<rect ry="0" rx="0" x="100" y="100" width="50" height="50" fill="blue" id="rect">
<animateTransform id="animacao" attributeType="xml" attributeName="transform" type="rotate" from="0 125 125" to="360 125 125" dur="2" repeatCount="indefinite" />
</rect>
</svg>
<input type="number" id="input_number" name="input_number" />
<button id="alterar">alterar</button>