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>

上記のコードはFirefox10.0.4では機能しますが、IE7では機能しません。(これは、私が抱えている問題を示すためのコードの一部にすぎません。)IE7には2つの問題があります。

  1. グリーンクラブのキャラクターである「2<♠PANTclass=clubs>♣♠PANT>」と表示されます。

  2. onclickが機能しないようです。

ありがとう、Koen

4

1 に答える 1

1

置換を次々に行うと、ある置換の HTML コードが他の置換の影響を受けます。innerHTMLブラウザごとに異なる値が返されるため、結果も異なります。

一部のブラウザは HTML タグを大文字で返すため、 のC文字が大文字の SPAN タグに置き換えられると、文字列内のand'2C'が他の置き換えに置き換えられます。SN

すべての置換を一度に行うと、1 つの置換が別の置換に影響を与えません。

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 に答える