Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2011, 13:01
Аспирант
Отправить личное сообщение для rockerror Посмотреть профиль Найти все сообщения от rockerror
 
Регистрация: 07.11.2011
Сообщений: 54

Выбрать все элементы, имеющие id
Добрый день, господа программисты. на форуме и в примерах не нашел решения, по сему обращаюсь к вам с вопросом: Можно ли как-то не слишком раком выбрать на странице все элементы (вне зависимости от того что это tr, td, div и пр.), имеющие id. Причем не важно какой, т.е. вообще все имеющие id элементы)) Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 07.11.2011, 13:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Как вариант с помощью ЖиКвери...

<!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>
Ответить с цитированием
  #3 (permalink)  
Старый 07.11.2011, 14:11
Аспирант
Отправить личное сообщение для rockerror Посмотреть профиль Найти все сообщения от rockerror
 
Регистрация: 07.11.2011
Сообщений: 54

Попробовал, длину возвращает верно вроде, но когда пытаюсь перебрать этот массив с целью получения значений 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, и какбэ немного теряюсь в догадках). Заранее спс =)
Ответить с цитированием
  #4 (permalink)  
Старый 07.11.2011, 14:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от rockerror
перебрать этот массив с целью получения значений 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(){
	$('*[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>
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2011, 15:04
Аспирант
Отправить личное сообщение для rockerror Посмотреть профиль Найти все сообщения от rockerror
 
Регистрация: 07.11.2011
Сообщений: 54

ksa, спасибо!)) понимаю, что косинус)) Но, пользуясь аналогией, не зная геометрию хрен ты узнаешь длину нужной стороны)) А "геометрию" я в данном случае не знаю, по сему и спросил)) А вообще спасибо большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mouseover, mouseout - не распространяется на дочерние элементы barmaley Events/DOM/Window 31 01.06.2017 08:52
Выбрать элементы где значение атрибута меньше или больше заданного Neokortex jQuery 5 03.10.2011 14:23
Как выбрать все элементы и определить на какой нажали prolapse Events/DOM/Window 5 21.09.2011 19:49
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Как удалить все пустые элементы UL smashercosmo Events/DOM/Window 13 25.02.2009 09:03