javascript遍历表

时间:2010-04-19 15:43:31

标签: javascript dom

如果我有某个代码,我如何在JavaScript中遍历或到达按钮(即输入== INPUT)。

<td> <div>
    <script></script>
    <script></script>
    <script></script>

       <input type="button"....../>
</div></td> 

我尝试过:

var cell = row.cells[0];
if (cell) {
var btn1 = cell.firstChild;
alert(btn.tagName.toUpperCase());

这导致了“DIV”和

var cell = row.cells[0];
if (cell) {
var btn = btn1.firstChild;
alert(btn.tagName.toUpperCase());

这导致了“SCRIPT”

但是做同样的事情(即firstChild),我无法成功。

感谢任何帮助。 感谢

1 个答案:

答案 0 :(得分:0)

为您的输入提供名称和ID属性,然后您就可以执行

var btn = document.getElementById("buttons_id");

..否则你需要一个递归函数来“遍历”DOM子树以找到按钮。

另一种方法是使用Prototype或jQuery之类的框架,它可以让你简单地做:

var cell = row.cells[0];
if (cell) {
  var btn = $(":button",cell); //jQuery
  $(cell).getElementsBySelector("input[type="button"]); //Prototype
}

请注意,我并不是100%熟悉Prototype.js中的选择 - 上面的内容可能有用,但可能有更简洁的方法。

仅供参考,这是我之前谈论的递归方法......

function findBtn(elm){
  if (elm && elm.tagName && elm.tagName.toUpperCase() == "INPUT" &&
      elm.getAttribute && elm.getAttribute("TYPE").toUpperCase() == "BUTTON") {
    return elm; //Found!
  }
  for (var i=0; i<elm.childNodes.length; i++) {
     var b = findBtn(elm.childNodes[0]);
     if (b) return b; //one of the recursive calls found it
     //else keep looping
  }
}
var btn = findBtn(row.cells[0]);
相关问题