таблица обхода javascript - PullRequest
       4

таблица обхода javascript

0 голосов
/ 19 апреля 2010

Если у меня есть определенный код, как мне перейти или перейти к кнопке (т.е. введите == INPUT) в JavaScript.

<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"

Но, делая то же самое (то есть первый ребенок), я не смог добиться успеха.

Любая помощь приветствуется. Спасибо

1 Ответ

0 голосов
/ 19 апреля 2010

Дайте вашему вводу имя и атрибут 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]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...