【问题标题】:dynamic changing max range and document.getElementById动态变化的最大范围和 document.getElementById
【发布时间】:2018-07-13 10:01:31
【问题描述】:

我有一个范围滑块,我希望通过 div 的 html 文本和 class="aaa" 动态设置 max 范围。不幸的是,它不起作用。也许我在设置最大值的var = zzz 中有一些错误..

这是我的代码

var  zzz = document.getElementById('aaa').val();   
document.getElementById('slider1').max = zzz;  

const $mutuo = $("#mutuo"),
  $rata = $("#rata"),
  $anni = $("#anni"),
  $slider1 = $("#slider1"),
  $slider2 = $("#slider2"),
  $max = $("#aaa").html();


function showAmount1(newAmount){
    document.getElementById('mutuo').innerHTML = newAmount;     
    $mutuo.val($("#mutuo").innerHTML);
    update();
}


function showAmount2(newAmount){

    document.getElementById('anni').innerHTML = newAmount; 
    $anni.val($("#anni").innerHTML);
    update();
}
    
    



  function update() {
  let interesseannuo = 1.60,
    C = $mutuo.html(),
    anni = $anni.html(),
    i = interesseannuo / 12 / 100,
    n = anni * 12,
    rata = C * i / (1 - Math.pow(1 + i, -n));

  $rata.html(rata.toFixed(2) + " €");
}
update();
<div class="info-text-wrapper">
    <p  class="info-paragraph black" val="123456" id="aaa">123456</p>
    <p  class="info-paragraph black">Totale mutuo (€)</p>
     <input type="range" min="0" max="" value="" step="10" onchange="showAmount1(this.value)" id="slider1"/>

    <div class="info-paragraph black" type="text" id="mutuo" >10000</div><br><br><br>

    <p class="info-paragraph black">Durata mutuo (anni)</p>
    <input type="range" min="10" max="30" value="10" step="5" onchange="showAmount2(this.value)" id="slider2">
    <div class="info-paragraph black" type="text" id="anni" >10</div><br><br><br>

    <p class="info-paragraph black">La tua rata</p>
    <div class="paragraph" id="rata"></div><br>
</div>

【问题讨论】:

    标签: javascript jquery html rangeslider


    【解决方案1】:

    val()在jQuery中使用,对于javascript你需要使用value

    在javascript中如果你想要输入值然后使用

    document.getElementById('aaa').value
    

    代替

    document.getElementById('aaa').val()
    

    如果你想要元素的文本,你可以使用

    document.getElementById('aaa').innerHTML
    

    document.getElementById('aaa').innerText
    

    var zzz = document.getElementById('aaa').innerText;
    document.getElementById('slider1').max = zzz;
    
    const $mutuo = $("#mutuo"),
            $rata = $("#rata"),
            $anni = $("#anni"),
            $slider1 = $("#slider1"),
            $slider2 = $("#slider2"),
            $max = $("#aaa").html();
    
    function showAmount1(newAmount) {
     document.getElementById('mutuo').innerHTML = newAmount;
     $mutuo.val($("#mutuo").innerHTML);
     update();
    }
    
    function showAmount2(newAmount) {
     document.getElementById('anni').innerHTML = newAmount;
     $anni.val($("#anni").innerHTML);
     update();
    }
    
    function update() {
     let interesseannuo = 1.60,
             C = $mutuo.html(),
             anni = $anni.html(),
             i = interesseannuo / 12 / 100,
             n = anni * 12,
             rata = C * i / (1 - Math.pow(1 + i, -n));
    
     $rata.html(rata.toFixed(2) + " €");
    }
    update();
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="info-text-wrapper">
        <p  class="info-paragraph black" val="123456" id="aaa">123456</p>
        <p  class="info-paragraph black">Totale mutuo (€)</p>
         <input type="range" min="0" max="" value="" step="10" onchange="showAmount1(this.value)" id="slider1"/>
        <div class="info-paragraph black" type="text" id="mutuo" >10000</div><br><br><br>
        <p class="info-paragraph black">Durata mutuo (anni)</p>
        <input type="range" min="10" max="30" value="10" step="5" onchange="showAmount2(this.value)" id="slider2">
        <div class="info-paragraph black" type="text" id="anni" >10</div><br><br><br>
        <p class="info-paragraph black">La tua rata</p>
        <div class="paragraph" id="rata"></div><br>
    </div>

    【讨论】:

      【解决方案2】:

      val() 函数只获取输入元素的值。为了获取其他元素的文本,需要使用innerHTML 或innerText。只需替换

      var  zzz = document.getElementById('aaa').val();   
      

      var  zzz = document.getElementById('aaa').innerText;   
      

      它应该可以工作。

      【讨论】:

      • 如果 div 内容不是动态的,这个建议是可以的。但是如果 div innerText 是动态生成的,它就不起作用.. 为此我不得不将该部分包装成 $(document).ready funcion() 但是,现在我有另一个问题.. 如果你看到这个 jsfiddle 页面的结构是更复杂,我想要这样,当我点击那些丑陋的灰色按钮时,价格会动态变化,甚至滑块 max.. 这可能吗?我可以直接联系你吗?也许更容易理解......
      猜你喜欢
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2015-08-31
      相关资源
      最近更新 更多