0

テーブルからテキストボックスの値を更新するために、次のスニペットを使用しています。

<table>
  <tr>
    <td>ProjectName</td>
    <td>Block</td>
    <td>.WorkProgressMilestone</td>
    <td>Completion</td>
    <td>
       <span class="sep">
       <img height="15px" width="20px" src="@Url.Content("~/Content/themes/base/images/Edit.png")" />
       </span>
       <a href="#" onclick="EditWorkDetails(this);" style="text-decoration: none">Edit</a>
       <input id="WorkProgressEditID" name="WorkProgressEditID" type="hidden" value="@v.WorkProgressID" />
     </td>
   </tr>
   <tr>..</tr>
 </table>


function EditWorkDetails(e) {
document.getElementById("txtCompletion").value = e.parentNode.parentNode.childNodes[3].innerText;
}

IE では問題なく動作しますが、他のブラウザ (Chrome) では動作しません。注目すべき点は、テーブル 'td's と 'tr's には、お互いを区別するための Id プロパティがないことです。だから私はここでjqueryを使うことはできません。すべてのブラウザで動作させるために私が従うことができる代替手段は何ですか.

4

3 に答える 3

2

これを試して:

document.getElementById("txtCompletion").value = $(this).parent().parent().children()[3].html();

また

$("txtCompletion").val($(this).parent().parent().children()[3].html());
于 2012-09-28T07:56:24.733 に答える
1

2 つの問題があります。

  1. innerText普遍的にサポートされていません。
  2. IE < 9 (および互換モードの IE 9) を除くすべてのブラウザには、空白テキスト ノードが含まれますchildNodes。IE はそうではないので、要素tr.childNodes[3]間に空白がある場合、別のノードを参照します。<td>

私がお勧めする修正:

  1. を使用しelement.textContent || elem.innerTextます。これは完全ではありませんが、ほとんどの場合は問題なく動作します。
  2. テーブル セルのテキスト コンテンツを取得しようとしているようです。その場合は、cellsIE 4 まで広くサポートされているテーブルのプロパティを使用できます。

両方の修正を含むコード例:

var td = e.parentNode.parentNode.cells[3];
var tdText = td.textContent || td.innerText;
于 2012-09-28T08:45:25.373 に答える
0

innerText はすべてのブラウザーでサポートされているわけではありません。jquery または

ブラウザのバージョンに基づいて .textContent と .innerText を使用する

于 2012-09-28T07:54:08.090 に答える