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 中有两个问题:

  1. 它显示“2<♠PANT class=clubs>♣♠PANT>”是 Green Clubs 字符。

  2. onclick 似乎不起作用。

谢谢,科恩

4

1 回答 1

1

当您一个接一个地进行替换时,来自一个替换的 HTML 代码将受到其他替换的影响。由于innerHTML在不同的浏览器中返回的值不同,结果也不同。

一些浏览器以大写形式返回 HTML 标签,因此当Cin 中的字符'2C'被大写的 SPAN 标签替换时,其他替换将替换字符串中的Sand N

一次进行所有替换,然后一个替换不会影响另一个:

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)会失败。我想你想显示元素的标题:

rowCells[bidsdoneCell].onclick = function () { alert(this.title); };
于 2012-11-07T17:15:49.997 回答