Выбрать все элементы, имеющие id
Добрый день, господа программисты. на форуме и в примерах не нашел решения, по сему обращаюсь к вам с вопросом: Можно ли как-то не слишком раком выбрать на странице все элементы (вне зависимости от того что это tr, td, div и пр.), имеющие id. Причем не важно какой, т.е. вообще все имеющие id элементы)) Заранее спасибо!
|
Как вариант с помощью ЖиКвери...
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> $(document).ready(function(){ alert($('*[id]').length); }); </script> </head> <body> <div> <div id='test'>d1</div> <div>d2</div> </div> </body> </html> |
Попробовал, длину возвращает верно вроде, но когда пытаюсь перебрать этот массив с целью получения значений id, чет не получается. Пробовал вот так:
$(document).ready(function() { var cells = $('*[id]'); for(var key in cells) { alert(key); } }); Кстати, нашел в инторнетах вот такое решение (вполне себе рабочее): var findId = function(id) { output=new Array(); // Создаём массив, который в последующем будем возвращать var node = (typeof id == 'undefined' ? document.getElementsByTagName('body')[0] : document.getElementById(id)).getElementsByTagName('*'); // Если в прямую не было указано дочерние элементы какого id надо искать собираем все в нутри body for(var i=0; i<node.length; i++) { // Перебираем полученное в node if(node[i].getAttribute('id')) output[node[i].getAttribute('id')] ="ok"; // Пишем массив output ключами, которого будут id элементов а значением, что пожелаете (в моём случаи строка ок) } return output; // Возвращаем сформированный массив } cells = findId(); for (var key in cells) { // Перебираем массив var val = cells [key]; alert(key); // Выводим id элемента } Однако, судя по всему подход, предложенным вами, ksa, даст более краткий и православный код. Подскажите, как развить ваше предложение до нужного функционала? (Сам пишу на php, и какбэ немного теряюсь в догадках). Заранее спс =) |
Цитата:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> $(document).ready(function(){ $('*[id]').each(function(){ alert(this.id) }); }); </script> </head> <body> <div> <div id='test1'>d1</div> <div>d2</div> <div id='test2'>d3</div> </div> </body> </html> |
ksa, спасибо!)) понимаю, что косинус)) Но, пользуясь аналогией, не зная геометрию хрен ты узнаешь длину нужной стороны)) А "геометрию" я в данном случае не знаю, по сему и спросил)) А вообще спасибо большое!
|
Часовой пояс GMT +3, время: 04:39. |