Получить HTML-содержимое таблицы привязки TD с Javascript - PullRequest
0 голосов
/ 25 апреля 2018

Не могу понять, как получить, например, атрибут href внутри ячейки строки таблицы.Когда я пытаюсь сделать это, кажется, что второй цикл не работает для выбранных TR элементов

function asd(){
    this.container = document.getElementsByClassName("cart-contents")[0];
    if (!this.container){
        return false;
    }

    this.itemsContainer = 
    this.container.getElementsByClassName("minicart-table")[0];
    this.itemsTable = this.itemsContainer.getElementsByClassName("views-table")[0];
    this.cartDetails = [];

    for (var i = 0, row; row = this.itemsTable.rows[i]; i++) {
        for (var j = 0, col; col = row.cells[j]; j++) {
            console.log(col[0].getElementsByTagName("a")[0].getAttribute("href"));
        }
        console.log('________________');
    }
}
asd();
<div class="cart-contents">
<div class="minicart-table">
    <table class="views-table">
        <tbody>
          <tr>
            <td class="views-field-field-product-image"><a href="url">text</a></td>
            <td class="tg-yw4l"></td>
           </tr>
        </tbody>
      </table>
  </div>
</div>

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Используйте col вместо col[0]

function asd(){
    this.container = document.getElementsByClassName("cart-contents")[0];
    if (!this.container){
        return false;
    }

    this.itemsContainer = 
    this.container.getElementsByClassName("minicart-table")[0];
    this.itemsTable = this.itemsContainer.getElementsByClassName("views-table")[0];
    this.cartDetails = [];

    for (var i = 0, row; row = this.itemsTable.rows[i]; i++) { 
        // only the first column
        col = row.cells[0];
        var anchor = col.getElementsByTagName("a")[0];
        if (anchor !== undefined) {
            console.log(anchor.getAttribute("href"));   
        }        
        console.log('________________');
    }
}
asd();
<div class="cart-contents">
<div class="minicart-table">
    <table class="views-table">
        <tbody>
          <tr>
            <td class="views-field-field-product-image"><a href="url">text</a></td>
            <td class="tg-yw4l"></td>
           </tr>
        </tbody>
      </table>
  </div>
</div>
0 голосов
/ 25 апреля 2018

Используйте для этого querySelector(). безопасно для использования.Пример:

var anchor = document.querySelector(".cart-contents a:first-child");

console.log(anchor.getAttribute("href"));
<div class="cart-contents">
<div class="minicart-table">
    <table class="views-table">
        <tbody>
          <tr>
            <td class="views-field-field-product-image"><a href="url">text</a></td>
            <td class="tg-yw4l"></td>
           </tr>
        </tbody>
      </table>
  </div>
</div>

Также вот как исправить ваш код:

for (var i = 0, row; row = this.itemsTable.rows; i++) {
    for (var j = 0, col; col = row[i].cells; j++) {
        console.log(col[j].getElementsByTagName("a")[0].getAttribute("href"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...