Вернуть undefined, когда я использую innerHTML - PullRequest
0 голосов
/ 03 августа 2020
<script>
window.onload=function(){
            var allA = document.getElementsByTagName("a");
            for(var i=0;i<allA.length;i++){
                allA[i].onclick=function(){     
                alert("Are you sure to delect the "+ 
                this.parentNode.parentNode.firstChild.innerHTML+"?");
                tr.parentNode.removeChild(tr);
                return false;}
}
};
</script>
<body>
           <tr id="Tlist">
                <th>A</th>
                <the>B</th>
                <th>C</th>
                <td><a href="javascript">Select</a></td>
            </tr>
</body>

Приведенный выше код является частью файла HTML, когда я нажимаю Select, я использовал parenNode.ParenNode для получения Tlist и использовал firstChild для получения A, если код без внутреннего HTML, он покажет мне весь Твист, так что я думаю, что поступил правильно, получив Tlist. Однако, когда я использовал внутренний HTML, чтобы попытаться получить текст внутри первого, это показывает мне undefined.

1 Ответ

1 голос
/ 03 августа 2020

Используйте firstElementChild вместо firstChild. firstChild вернет текстовый узел, в данном случае пробел перед первым <th>. Использование firstElementChild пропускает текстовые узлы.

window.onload = function() {
  var allA = document.getElementsByTagName("a");
  for (var i = 0; i < allA.length; i++) {
    allA[i].onclick = function() {
      var tr = this.parentNode.parentNode;
      alert("Are you sure to delect the " +
        tr.firstElementChild.innerHTML + "?");
      tr.parentNode.removeChild(tr);
      return false;
    }
  }
};
<table>
  <tr id="Tlist">
    <th>A</th>
    <th>B</th>
      <th>C</th>
      <td><a href="javascript:void(0)">Select</a></td>
  </tr>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...