Обратный инжиниринг Javascript: преобразование HTML-таблицы в строку / текст - PullRequest
2 голосов
/ 05 апреля 2011

В настоящее время у меня есть переменная таблицы, для которой я хочу получить содержимое таблицы следующим образом: <table><tr></tr></table> вместо получения объекта JavascriptЕсть ли решение для поиска метода, который мог бы сделать это?

Ответы [ 3 ]

6 голосов
/ 05 апреля 2011
1 голос
/ 05 апреля 2011

Попробуйте следующий код ...

<html>
<head>
    <script type="text/javascript">
        function sample_function(){
            alert(document.getElementById('div_first').innerHTML);
        }
    </script>
</head>
<body>
<div id="div_first">
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table></div>
    <button onclick="sample_function()">Click Here</button>
</body>
</html>
1 голос
/ 05 апреля 2011

Предполагается, что ваша таблица является единственной таблицей на странице. Если это не так, присвойте ему уникальный идентификатор (например, tableID) и укажите ссылку, используя getElementsById("tableID").

var tables = document.getElementsByTagName("table");
var firstTable = tables[0];
var tableAttr = firstTable.attributes;
// get the tag name 'table', and set it lower case since JS will make it all caps
var tableString = "<" + firstTable.nodeName.toLowerCase() + ">";
// get the tag attributes
for(var i = 0; i < tableAttr.length; i++) {
    tableString += " " + tableAttr[i].name + "='" + tableAttr[i].value + "'";
}

// use innerHTML to get the contents of the table, then close the tag
tableString += firstTable.innerHTML + "</" +
    firstTable.nodeName.toLowerCase() + ">";

// table string will have the appropriate content

Вы можете увидеть это в действии в короткой демонстрации .

Подходящие вещи для изучения:

  • getElementsByTagName - получить элементы DOM по имени тега
  • атрибуты - свойство DOM, которое получает массив атрибутов
  • innerHTML - получает строку HTML внутри любого объекта DOM
  • nodeName - получает имя любого объекта DOM

Если вы используете фреймворк, jquery .html () и плагин getAttributes также могут быть полезны

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