Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改<;td>';使用jquery_Javascript_Jquery - Fatal编程技术网

Javascript 更改<;td>';使用jquery

Javascript 更改<;td>';使用jquery,javascript,jquery,Javascript,Jquery,我有一个价值表。在JQuery中,是否可以通过单击“货币”链接来使用汇率更改单元格中的值?这个静态示例表 <table border="1"> <tr> <td class="currency">100</td> <td class="currency">200</td> <td class="current">now in USD</td> <

我有一个价值表。在JQuery中,是否可以通过单击“货币”链接来使用汇率更改单元格中的值?这个静态示例表

<table border="1">
    <tr>
      <td class="currency">100</td>
      <td class="currency">200</td>
      <td class="current">now in USD</td>
    </tr>
    <tr>
      <td class="currency">150</td>
      <td class="currency">230</td>
    </tr>
    <tr>
      <td class="currency">400</td>
      <td class="currency">200</td>
    </tr>
    <tr>
      <td class="currency">550</td>
      <td class="currency">2920</td>
    </tr>
  </table>

  <a href="#" class="USD">USD</a>
  <a href="#" class="EUR">EUR</a>

100
200
现在以美元计价
150
230
400
200
550
2920

请看。换句话说,通过单击货币值,必须根据汇率重新计算货币值。在我关于JSFIDLE的示例中,我想了解如何简单地更改值(例如
usd=1
eur=1.3
),谢谢

您可以按类选择并修改它们:

$('.currency').each(function(){
    var eurMultiplier = 1.3;
    var currentValue = parseInt($(this).html());
    var newValue = currentValue * eurMultiplier;
    $(this).html(newValue);
});

此代码未经测试,但应给出如何执行的提示。

首先,您需要存储原始美元值,以便将其用作所有汇率的基础。
data-x
属性非常适合于此

$('.currency').each(function() {
    $(this).data('usd-value', $(this).text());
});
然后,您可以简单地将该值乘以所需的任何汇率,再次存储在链接本身的
data
属性中。试试这个:

<a href="#" class="exchange USD" data-exchangerate="1">USD</a>
<a href="#" class="exchange EUR" data-exchangerate="1.3">EUR</a>
<a href="#" class="exchange GBP" data-exchangerate="0.63">GBP</a>


注意:我还添加了
GBP
,只是为了说明此方法的可扩展性。

您也可以这样做:-

var flag = false;
$('.USD').click(function() {
    if (flag)
    {
        $('.currency').each(function() {
            $(this).text(parseFloat($(this).text() / 1.3));
        });
        flag = false;
        $('.current').text("Now in USD");
        $('.EUR').removeAttr("disabled");
    }
});
$('.EUR').click(function() {
    flag = true;
    $('.currency').each(function() {
        $(this).text(parseFloat($(this).text() * 1.3));
    });
    $('.current').text("Now in EUR");
    $(this).attr("disabled", "disabled");
});

参考

是的,有可能,您尝试了什么?您的小提琴没有JavaScript/JQuery。显示您尝试过的内容。@未定义我尝试过使用.val(),但我认为在这种情况下,这不是正确的方法。请注意当您反复单击某个exchange时会发生什么link@RoryMcCrossan:是的,有一个bug。现在我已经修复了。当你继续点击时仍然会发生。老实说,这种逻辑有点缺陷,因为您处理的是不断变化的数字,而不是像页面加载时那样对值进行计算。