Обновление Javascript до ячейки таблицы HTML (от тысяч до миллионов) - PullRequest
0 голосов
/ 19 ноября 2009

Мне нужно создать Javascript в моем веб-отчете, который преобразует табличные значения в тысячи или миллионы (например, делит или умножает на 1000).

Проблема в том, что каждое значение «кликабельно» (т. Е. Оно заключено в тег привязки).

Возможно ли это?

<table class="Table" >
<thead><tr>
  <th class="l Header" scope="col">£000s</th>
  <th class="l Header" scope="col">Col1</th>
  <th class="l Header" scope="col">Col2</th>
</tr></thead>
<tbody>
<tr>
  <td class="l Data">   My Data Row </td>
  <td class="l Data">   <a class=nums href="javascript:MyFunc();">  11,372,397</a></td>
  <td class="l Data">   <a class=nums href="javascript:MyFunc();">  11,344,327</a></td>
</tr>
</tbody>

редактировать

Я использую IE6. в основном цель состоит в том, чтобы иметь кнопки «тысячи» и «миллионы», чтобы значения таблицы могли стать 11 372 тыс. или 11,4 м и т. д. ...

Ответы [ 2 ]

3 голосов
/ 19 ноября 2009

Я бы использовал jQuery

$(function (){
    $.each($('.nums'), function () {
        $(this).html(Number($(this).html().replace(/,/g,"")) /*your math here*/);
    });
});

В ответ на ваши изменения: Так как мне скучно, я написал этот рабочий код для вас, закруглите и вставьте ',' как считаете нужным.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

<table class="Table" >
<thead><tr>
  <th class="l Header" scope="col">£000s</th>
  <th class="l Header" scope="col">Col1</th>
  <th class="l Header" scope="col">Col2</th>
</tr></thead>
<tbody>
<tr>
  <td class="l Data">   My Data Row </td>
  <td class="l Data">   <a class="nums" href="javascript:MyFunc();">  11,372,397</a></td>
  <td class="l Data">   <a class="nums" href="javascript:MyFunc();">  11,344,327</a></td>
</tr>
</tbody>

<input type="button" onclick="toMillions();"> 
<input type="button" onclick="restore();"> 

<script type="text/javascript">

    $(function (){
        $.each($('.nums'), function () {
            $.data(this, "theValue", $(this).html());
        }); 
    });


    function toMillions(){
        $.each($('.nums'), function () {
            $(this).html(Number($.data(this,"theValue").replace(/,/g,"")) / 1000000 + ' million');
        });
    }

    function restore(){
        $.each($('.nums'), function () {
                $(this).html($.data(this,"theValue"));
        });
    }
</script>
1 голос
/ 19 ноября 2009

Я бы начал думать о document.getElementsByClassName ('nums'), который даст вам массив ваших элементов. Примерно так:

nums = document.getElementsByClassName('nums');
for (i in nums)
   nums[i].innerHTML = nums[i]+',000';i

Вполне вероятно, что это работает только в новых браузерах, поэтому вы можете захотеть использовать подобный метод в среде JavaScript. Jquery позволяет получать элементы по имени класса с помощью селектора

$('.nums')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...