如何使用数据值来引用另一个变量

时间:2017-09-11 01:38:53

标签: javascript jquery

我正在尝试使用data属性创建转换器以引用回到之前的值。

我似乎无法得到:

  • data-my_currency返回301.46
  • 数据 - 这可以参考4259.00

$('input').keyup(function() {
  var BTC = 4259.00
  var ETH = 301.46
  var LTC = 67.72

  var USD = 1
  var EUR = 0.83
  var CNY = 6.46

  var convertFrom = $('.js').data('my_currency'); 
  //Should refer back to EUR var
  
  var convertTO = $('.js').data('this'); 
  //Should refer back to BTC var
  
  var amount = $('input').val();
  var result = convertFrom * convertTO * amount;



  var newresult = result.toFixed(2);
  $('.output').html(newresult);



});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div class="js" data-my_currency="EUR"></div>
<div class="js" data-this="BTC"></div>
<input type="text" class="input" />

<div class="output">Me</div>

2 个答案:

答案 0 :(得分:1)

或者,如果不更改现有代码,可以在全局范围内声明变量(应避免使用),并使用window object获取变量的值。

var BTC = 4259.00
var ETH = 301.46
var LTC = 67.72

var USD = 1
var EUR = 0.83
var CNY = 6.46

$(document).ready(function () {
    $('input').keyup(function () {
        var convertFrom = $('[data-my_currency]').data('my_currency');
        var convertTO = $('[data-this]').data('this');
        var amount = $('input').val(); //Assuming user enters only numbers
        var result = window[convertFrom] * window[convertTO] * amount;
        var newresult = result.toFixed(2);
        $('.output').html(newresult);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class="js" data-my_currency="EUR"></div>
<div class="js" data-this="BTC"></div>
<input type="text" class="input" />

<div class="output">Me</div>

答案 1 :(得分:0)

如果您试图让他们回顾JavaScript变量,为什么不直接使用这些JavaScript变量?

但是,如果您将比特币和货币价格作为页面中的元素写入(我假设是这种情况),那么您分别在寻找$('.js[data-my_currency]')[0].innerHTML$('.js[data-this]')[0].innerHTML

打破这个局面:

  • .js定位课程js
  • [data-my_currency]定位attribute data-my_currency
  • $('.js[data-my_currency]')返回nodeList
  • [0]抓取第一个节点
  • .innerHTML抓取该节点内的内容。

$('input').keyup(function() {
  var convertFrom = $('.js[data-my_currency]')[0].innerHTML;
  var convertTO = $('.js[data-this]')[0].innerHTML;
  var amount = $('input').val();
  var result = convertFrom * convertTO * amount;
  var newresult = result.toFixed(2);
  $('.output').html(newresult);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="js" data-my_currency="EUR">0.83</div>
<div class="js" data-this="BTC">4259.00</div>
<input type="text" class="input" />

<div class="output">Me</div>

希望这有帮助! :)