2009-11-19 129 views
0

我需要在我的網頁報表上創建一些Javascript表格,將表格值轉換爲數千或數百萬(例如,除以或乘以1000)。Javascript更新爲HTML表格單元格(從數千到數百萬)

麻煩的是每個值都是可點擊的(即它被封裝在一個錨標籤中)。

這可能嗎?

<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,372k或11.4m等...

+0

林不理解你的問題,你能不能更詳細地 – TStamper 2009-11-19 13:42:28

+3

去我很想downvote只是B/C你提到的IE6 :-( – 2009-11-19 15:57:57

+0

「我使用IE6。」漢奸你是 – erenon 2009-11-19 16:45:04

回答

3

我會用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> 
+0

非常感謝奧格 - 我會在週一看這個。快速的問題,但是這個代碼工作沒有互聯網連接?我需要代碼以離線模式工作。 – 2009-11-21 12:46:52

+0

您將不得不以另一種方式提供jQuery JS,但它應該可以工作。 – 2009-11-21 21:24:10

1

我會開始考慮document.getElementsByClassName('nums' ),它會給你一個你的元素數組。事情是這樣的:

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

這可能僅適用於新的瀏覽器,雖然如此,你可能希望在javascript框架使用了類似的方法。 jQuery的允許獲得通過類名的元素與選擇

$('.nums') 
+0

看看這裏的交叉實現 - http://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/ – 2009-11-19 14:28:24

+0

應該說上面的瀏覽器,我似乎忍受打字lisp輕微:) – 2009-11-19 14:29:07

+0

.getElementByClassName不幸的是在IE8(沒有解決方法)不工作,我會說是一個非常新的瀏覽器。 – 2009-11-19 14:30:52