2012-11-07 45 views
0
<!DOCTYPE html> 
<html> 
    <head> 
    <script type="text/javascript" src="./jquery.js"></script> 
    <style type="text/css"> 
     .spades { color: blue; font-family: Arial, Verdana, Tahoma, sans-serif; font-size: 120%; font-weight:bold } 
     .hearts { color: red; font-family: Arial, Verdana, Tahoma, sans-serif; font-size: 120%; font-weight:bold } 
     .diams { color: #FF6600; font-family: Arial, Verdana, Tahoma, sans-serif; font-size: 120%; font-weight:bold } 
     .clubs { color: #009D00; font-family: Arial, Verdana, Tahoma, sans-serif; font-size: 120%} 
    </style> 
    </head> 
    <body onload="bid_done('2C','TESTSTRING')"> 
    <table id="bidsdone" border="1"> 
     <caption><b>Bids done:</b></caption> 
     <tr> 
     </tr> 
    </table> 
    TEST3 
    <div> 
     <p id="clu"><span class="clubs">&clubs;</span></p> 
     <p id="dia"><span class="diams">&diams;</span></p> 
     <p id="hea"><span class="hearts">&hearts;</span></p> 
     <p id="spa"><span class="spades">&spades;</span></p> 
    </div> 

    </body> 
    <script type="text/javascript"> 
     function add_bid_done() { 
     var table=document.getElementById("bidsdone"); 
     var row=table.insertRow(-1); 
     var cell1=row.insertCell(0); 
     } 

     function bid_done(x,bc) { 
     add_bid_done(); 
     var bid_abbr = x; 
     var bidsdoneRows=1; 
     var bidsdoneCell=0; 
     var rows=document.getElementById("bidsdone").rows; 
     var rowCells=rows[bidsdoneRows].cells; 
     x=x.replace(/C/g,document.getElementById("clu").innerHTML); 
     x=x.replace(/D/g,document.getElementById("dia").innerHTML); 
     x=x.replace(/H/g,document.getElementById("hea").innerHTML); 
     x=x.replace(/S/g,document.getElementById("spa").innerHTML); 
     x=x.replace(/N/g,"NT"); 
     rowCells[bidsdoneCell].innerHTML=x; 
     rowCells[bidsdoneCell].title=bc; 
     rowCells[bidsdoneCell].abbr=bid_abbr; 
     rowCells[bidsdoneCell].setAttribute('onclick', 'alert(title)'); 
     } 
    </script> 
</html> 

上述代碼適用於Firefox 10.0.4,但不適用於IE7。 (這是代碼中的一部分,以證明我有這個問題。) 我有兩個問題,在IE7:替換跨度類風格的字符:與Mozilla不同的IE

  1. 它顯示「2 <♠褲類=俱樂部>♣♠褲子>」 ISO的綠色俱樂部字符。

  2. onclick似乎不起作用。

感謝, 公園

回答

1

當你正在做一個接一個的更換,從一個HTML代碼替換將被其他內容替換受影響。由於innerHTML在不同的瀏覽器中返回不同的值,因此結果會有所不同。

一些瀏覽器返回的HTML標籤大寫的,所以當'2C'C字符由大寫的一個SPAN標籤更換,其它內容替換將替換字符串中的SN

是否所有的內容替換一次,然後更換不會影響另一個:

x = x.replace(/[CDHSN]/g, function(m){ 
    switch (m) { 
    case 'C': return document.getElementById("clu").innerHTML; 
    case 'D': return document.getElementById("dia").innerHTML; 
    case 'H': return document.getElementById("hea").innerHTML; 
    case 'S': return document.getElementById("spa").innerHTML; 
    } 
    return "NT"; 
}); 

您沒有任何title變量,所以alert(title)將失敗。我想你想顯示元素的標題:

​​
+0

非常感謝你的回答! Rem:你的例子中有一些')'太多了。 這是不是在textarea工作正確嗎? – user1798023

+0

我發現: 「所有主流瀏覽器均支持setAttribute()方法。 Internet Explorer 8及更早版本不支持此方法。」 – user1798023

+0

@ user1798023:謝謝,糾正了這個例子。沒有理由不應該使用textarea。你可以設置'onclick'屬性而不是'setAttribute'。見上面的編輯。 – Guffa