2016-08-10 2 views
5

Я пытаюсь проверить, присутствует ли атрибут HTML и получить значение, используя свойство Attribute (tabindex). Но я получаю ошибку ниже:Проверить, присутствует ли атрибут HTML и получить значение

Unable to get property 'hasAttribute' of undefined or null reference

Я использую jGrid и jQuery. Если атрибут присутствует, я пытаюсь получить значение этого конкретного td.

Пожалуйста, обратитесь к ниже код:

<tr class="jqgrow ui-row-ltr ui-widget-content myAltRowClassEven ui-state-highlight" tabindex="0" id="2" role="row" aria-selected="true"> 
    <td aria-describedby="jqGrid11_cname" title=" TESTTHIS" class="zeroBorderRight" style="text-align: left; height: 20px;" role="gridcell"> 
     TESTTHIS 
    </td> 
</tr> 
+1

Как вы выбираете элемент html? 'Невозможно получить xxx неопределенного' заставляет меня поверить, что может возникнуть проблема с вашей ссылкой на элемент – Hodrobond

+0

Не могли бы вы отправить код вашего теста? Было бы проще рассказать вам, что такое ошибка, если бы мы могли видеть код. –

+1

Вы включили «jqgrid» в качестве тега вашего вопроса. Было бы полезно, если бы вы сформулировали проблему более четко: где (в которой обратный вызов) вам нужно проверить существование какого-либо атрибута. Включение кода JavaScript может устранить многие вещи. – Oleg

ответ

2

Использование JQuery has attribute selector для filterout элемент с атрибутом tabindex.

var text = $('td[tabindex]').text(); 
//--------------^^^^^^^^^^-------------------- 
+0

Привет @Pranav. Большое спасибо за ваше предложение. Но проблема в том, что таблица находится в цикле и имеет много td с tabindex. Извините, я забыл упомянуть, что он в цикле. – user3213490

+0

@ user3213490 '[tabindex]' поможет отфильтровать .... например: '$ ('. Yourclass [tabindex]')' –

3

Попробуйте это:

$("#item").attr("tabindex") 
+0

Это сработало. Большое спасибо всем за ваши решения. – user3213490

0

решение без JQuery, ES6

var hasAttr = [...document.getElementById('#blah').attributes] 
    .map(a => a.name) 
    .indexOf(ATTRIBUTE) > -1; 
1

Если вы хотите, чтобы получить значения TabIndex атрибута вы можете сделать:

$(function() { 
 
    $('table tbody tr[tabindex]').each(function (i, e) { 
 
    var tabindex = e.getAttribute('tabindex'); 
 
    console.log('tabindex=' + tabindex + ' Row text: ' + e.textContent); 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 

 
<table> 
 
    <tbody> 
 
    <tr class="jqgrow ui-row-ltr ui-widget-content myAltRowClassEven ui-state-highlight" id="1" role="row" 
 
     aria-selected="true"> 
 
     <td aria-describedby="jqGrid11_cname" title=" TESTTHIS" class="zeroBorderRight" 
 
      style="text-align: left; height: 20px;" role="gridcell"> TESTTHIS 
 
     </td> 
 
    </tr> 
 
    <tr class="jqgrow ui-row-ltr ui-widget-content myAltRowClassEven ui-state-highlight" tabindex="0" id="2" role="row" 
 
     aria-selected="true"> 
 
     <td aria-describedby="jqGrid11_cname" title=" TESTTHIS" class="zeroBorderRight" 
 
      style="text-align: left; height: 20px;" role="gridcell"> TESTTHIS 
 
     </td> 
 
    </tr> 
 
    <tr class="jqgrow ui-row-ltr ui-widget-content myAltRowClassEven ui-state-highlight" tabindex="2" id="3" role="row" 
 
     aria-selected="true"> 
 
     <td aria-describedby="jqGrid11_cname" title=" TESTTHIS" class="zeroBorderRight" 
 
      style="text-align: left; height: 20px;" role="gridcell"> TESTTHIS 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

Смежные вопросы