简体   繁体   English

如何获取不同ElementId的动态Javascript代码,以使用range-slider.value更改element.value

[英]How to get dynamic Javascript-Code for different ElementId to change element.value with range-slider.value

I created dynamically a HTML-Form and changed the value in Form-Elements with Javascript. 我动态创建了一个HTML表单,并使用Javascript更改了Form-Elements中的值。 How can I also create the Javascript code dynamic? 我怎样才能创建动态的Javascript代码? Or is there a better way to code in Javascript that every range and input element I create depend upon each other? 或者是否有更好的方法在Javascript中编码我创建的每个范围和输入元素都相互依赖?

I thought about changing elements by classes but it doesn't works (maybe wrong coded?). 我想过按类更改元素但它不起作用(可能是错误的编码?)。 And I was not sure if it works, because I have more than one Volume-input element (and pressure element). 我不确定它是否有效,因为我有多个Volume-input元素(和压力元素)。 They will be created for different objects in the CMS. 将为CMS中的不同对象创建它们。 I 'display: block/none;' 我'显示:阻止/无;' them. 他们。

HTML-Code would look Like: HTML代码看起来像:

<form>
<label for="(dynamicID)">Volume</label>
<input type="number" class="text-center" id="(dynamicID)">
<input id="slide-(dynamicID)" type="range" class="slider" min="1" max="10" step="1"/>
</form>

Javascript to change the Value of the Input element when slider's input change (and also the other way round) looks Like: 当滑块的输入改变(以及反过来)时,Javascript更改Input元素的值看起来像:

var sliders = document.getElementById("slide-(dynamicID)");
var outputs = document.getElementById("(dynamicID)");
outputs.value = sliders.value;
sliders.oninput = function() {
 outputs.value = this.value;
}
outputs.oninput = function() {
  sliders.value = this.value;
}

That works Perfectly when I code it statically. 当我静态编码时,这非常有效。 I can code the HTML-Elements with my CMS dynamic. 我可以用我的CMS动态编码HTML-Elements。

I also will take any other advice. 我也会接受任何其他建议。 Thanks in advance. 提前致谢。

 function setValue(e){ let sliders = document.getElementsByClassName("dynamicInput"); Array.prototype.forEach.call(sliders,(slider)=>{ slider.value = e.target.value }) } let sliders = document.getElementsByClassName("dynamicInput"); Array.prototype.forEach.call(sliders,(slider)=>{ slider.oninput = setValue; }); 
 <form> <label for="(dynamicID)">Volume</label> <input type="number" class="text-center dynamicInput" id="(dynamicID)"> <input id="slide-(dynamicID)" type="range" class="slider dynamicInput" min="1" max="10" step="1"/> </form> 

this is a bit mroe dynamic it works for all elements that have "dynamicInput" in the className and implment a .value setter 这是一个有点mroe动态,它适用于在className中具有“dynamicInput”的所有元素,并且实现了.value setter

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM