javascript - 根据ID获取自定义属性

时间:2010-10-15 15:23:45

标签: javascript attributes

如何在此示例中找到给定id的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 个答案:

答案 0 :(得分:39)

试试这个

var id = document.getElementById("divId").getAttribute("attributeId");

答案 1 :(得分:6)

检索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.

答案 2 :(得分:5)

如何根据id

获取属性

使用jQuery:

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

没有jQuery:

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

您可以在this Fiddle尝试这两种方式。

这两个选项可以在任何浏览器中使用

你真正想要的是什么

首先,最好为自定义属性data-seq而不是seq命名。 HTML5标准允许使用自定义元素,但仅在其名称以data-开头时才认为它们有效。

此外,将点击处理程序直接放在CSS中并不是一个好主意。最好使用class属性或某个自定义data-action属性,其值为editdelete,然后在完成加载页面时附加事件处理程序。然后,查看具有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'));
});

另请参阅this Fiddlethis Fiddle,了解JSFiddle上的相同演示,分别是没有和使用jQuery。

答案 3 :(得分:1)

您想使用objRef.getAttribute('seq')或计划旧点符号objRef.seq