2012-11-15 2 views
-2

У меня есть таблица значений. Возможно ли с помощью JQuery щелчок по ссылке на валюту для изменения значения в ячейках с обменными курсами? Этот статический пример таблицаИзменить значения в <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> 

Pls выглядеть jsfiddle. Другими словами, нажав на валютные значения, необходимо пересчитать их согласно ставкам. В моем примере на jsfiddle я хочу понять, как просто изменить значение (например, usd=1eur=1.3) Спасибо!

+2

Да, это возможно, что вы пробовали? – undefined

+0

В вашей скрипке нет JavaScript/JQuery. Покажите, что вы пробовали. – codingbiz

+0

@undefined Я пробовал с .val(), но я думаю, что это не правильный метод в этом случае – halofourteen

ответ

4

Прежде всего, вам необходимо сохранить оригинальные значения USD, чтобы вы могли использовать их в качестве базы для всех курсов обмена. Атрибут 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> 
$(".exchange").click(function() { 
    var rate = $(this).data('exchangerate'); 
    $('.currency').each(function() { 
     $(this).text(parseFloat($(this).data('usd-value') * rate)); 
    }); 
}); 

Example fiddle

Примечание Я также добавил GBP, чтобы показать, как расширяемый этот метод.

+0

parseFloat не принимает никаких оснований .. –

+0

@ Sushanth-- хорошо поймать, спасибо. –

+0

Добро пожаловать :) +1 .. отличное использование data- * attributes ... –

0

Вы можете выбрать их по классам и модифицировать их:

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

этот код не тестировался, но Шоуда дать вам подсказку о том, как это сделать.

1

Вы можете сделать это слишком: -

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"); 
}); 

См LIVE DEMO

+0

Смотрите, что происходит, когда вы повторно нажимаете ссылку на обмен –

+0

@RoryMcCrossan: Да, есть ошибка. Теперь я исправил. –

+0

Все еще происходит, когда вы нажимаете EUR. Логика немного ошибочна, если честно, поскольку вы работаете с постоянно меняющимися цифрами, а не выполняете вычисления на значениях, поскольку они были на загрузке страницы. –

Смежные вопросы