javascript - получить пользовательский атрибут на основе идентификатора - PullRequest
13 голосов
/ 15 октября 2010

Как мне найти номер seq, указанный в этом примере, по идентификатору?

<table>
<tr class="row_header thin_border"> 
    </tr><tr id="id33192010101533333"  seq="2">
    <td>20101015</td>
    <td>600</td>
    <td>730</td>        
    <td><a href="#" onclick="deleteActivity(3319,20101015,1);">Click</a></td>
    <td><a href="#" onclick='selectEditActivity("id3319201010153333");'>Click</a></td>
    </tr>

    <tr id="id3319201010151111"  seq="3">
    <td>20101015</td>
    <td>600</td>
    <td>730</td>        
    <td><a href="#" onclick="deleteActivity(3319,20101015,1);"> <img src="/bbhtml/img/deleteAction.png"></a></td>
    <td><a href="#" onclick='selectEditActivity("id3319201010151111");'><img src="/bbhtml/img/editAction.png"></a></td>
    </tr>
<table>


<script>
    function selectEditActivity(pass_id){
        alert("seq# =:" + ???)
    }
</script>

Ответы [ 4 ]

40 голосов
/ 15 октября 2010

попробуйте

var id = document.getElementById("divId").getAttribute("attributeId");
7 голосов
/ 15 октября 2010

Получить элемент DOM и затем получить атрибут seq:

document.getElementById(id).getAttribute('seq'); // note: this will return a string, and getElementById might return null in case there is no element with the given id.
5 голосов
/ 26 января 2016

Как получить атрибут на основе идентификатора

С помощью jQuery:

var seq = $('#id33192010101533333').attr("seq");

Без jQuery:

vvar seq = document.getElementById("id3319201010151111").getAttribute("seq");

Вы можете попробовать оба из них на эта скрипка .

Обе опции должны работать в любом браузере !


Что вы действительно хотите

Прежде всего, лучше назвать свой пользовательский атрибут data-seq вместо seq.Стандарт HTML5 допускает использование пользовательских элементов, но считает их действительными только в том случае, если их имя начинается с data-.

Кроме того, не рекомендуется помещать обработчики кликов непосредственно в CSS.Лучше использовать свойство class или какое-либо пользовательское свойство data-action со значением, например edit или delete, а затем присоединить обработчик событий после завершения загрузки страницы.Затем посмотрите на первого предка, у которого есть свойство data-seq, и получите это свойство.

Поскольку одна демонстрация говорит более тысячи слов, вот демо:

var list = document.querySelectorAll('[data-action="delete"]');
for (var i = 0; i < list.length; ++i) {
    list[i].addEventListener("click", function(e){
        alert('delete ' + e.target.closest('[data-seq]').getAttribute('data-seq'));
    });
}

var list = document.querySelectorAll('[data-action="edit"]');
for (var i = 0; i < list.length; ++i) {
    list[i].addEventListener("click", function(e){
        alert('edit ' + e.target.closest('[data-seq]').getAttribute('data-seq'));
    });
}
table, td {
    border : 1px solid #333;
}

td {
    padding : 10px;
}
<table>
    <tr class="row_header thin_border"></tr>
    <tr id="id33192010101533333" data-seq="2">
        <td>20101015</td>
        <td>600</td>
        <td>730</td>        
        <td><a href="#" data-action="delete">Click</a></td>
        <td><a href="#" data-action='edit'>Click</a></td>
    </tr>
    <tr id="id3319201010151111" data-seq="3">
        <td>20101015</td>
        <td>600</td>
        <td>730</td>        
        <td><a href="#" data-action="delete"> <img src="https://i.stack.imgur.com/mRsBv.png?s=64&g=1"></a></td>
        <td><a href="#" data-action='edit'><img src="https://i.stack.imgur.com/mRsBv.png?s=64&g=1"></a></td>
    </tr>
<table>

Или, если вы предпочитаете способ jQuery, вы можете заменить код JavaScript следующим (намного более простым) кодом:

$('[data-action="delete"]').click(function(e){
    alert('delete ' + $(this).closest('[data-seq]').data('seq'));
});

$('[data-action="edit"]').click(function(e){
    alert('edit ' + $(this).closest('[data-seq]').data('seq'));
});

См. Также эту скрипку и эту скрипку для той же демонстрации на JSFiddle, соответственно без и с jQuery.

1 голос
/ 15 октября 2010

Вы хотите использовать objRef.getAttribute ('seq') или планировать старые точечные обозначения objRef.seq

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...