获取函数(this)td元素的ID

时间:2013-12-02 14:59:07

标签: javascript html function this

我通过函数发送TD,但我无法与ID进行交互。

HTML:

<tr>
    <td id="1" onclick="move(this);"></td>
    <td id="2" onclick="move(this);"></td>
    <td id="3" onclick="move(this);"></td>
</tr>

JS:

function move(td) {
    //I want the ID of this td that I've captured by "this"
    var tdId = td.id; //<--- This doesn't works

    var tds = document.getElementsByTagName('td');
    for (var td in tds) {
            if (tds[td].innerHTML == "last") {
                tdFinal = tds[td];
            }
    }
    alert(tdFinal.id); //<---- This works fine
}

3 个答案:

答案 0 :(得分:1)

强文对我而言,它的工作正常:)

这是一个小提琴:http://jsfiddle.net/4P3jF/

var move = function(td) {
//I want the ID of this td that I've captured by "this"
var tdId = td.id; //<--- This doesn't works

alert(tdId);

}

答案 1 :(得分:0)

Let's start with a jsbin.com demo. People love demos.


应该解决的几件事情:

<强> 1。 HTML ID应以字母

开头

这不再是HTML 5中的要求,但您仍然应该这样做。 Read more about the id attribute here

如果要将数据附加到元素,则应使用data-*属性。 Read more about data-* attributes here

<table id="my-table">
  <tr>
      <td data-id="1"></td>
      <td data-id="2"></td>
      <td data-id="3"></td>
  </tr>
</table>

<强> 2。不引人注目的JavaScript

我删除了onclick属性,转而采用更多unobtrusive方法。我将一个简单的id附加到table元素,以便轻松定位我们关注的特定td元素。

// our move function
function move(elem) {
  console.log(elem.getAttribute("data-id"));
}

// our click listener
function onClick(event) {
  move(this);
  event.preventDefault();
}

// get our table's td elements
var table = document.getElementById("my-table");
var tds   = table.getElementsByTagName("td");

// loop through each td and add a click listener
for (var i=0, len=tds.length; i<len; i++) {
  tds[i].addEventListener("click", onClick);
}

添加一些CSS以使td元素显示为可点击

#my-table td {
  cursor: pointer;
}

答案 2 :(得分:-1)

你的第一句话工作正常!

我做了一个小例子: http://jsfiddle.net/8tgVq/2/

(检查控制台输出结果!)

HTML:

<table>
    <tr>
        <td id="1" onclick="move(this);">a</td>
        <td id="2" onclick="move(this);">b</td>
        <td id="3" onclick="move(this);">c</td>
    </tr>
</table>

JS:

function move(td) {
    console.log(td.id);
}

输出:

1
2
3