Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2012, 11:39
Интересующийся
Отправить личное сообщение для aiaks Посмотреть профиль Найти все сообщения от aiaks
 
Регистрация: 20.08.2012
Сообщений: 15

Получить id объекта
Добрый день =)

Такая проблема, есть пользовательское выделение, необходимо просмотреть всех родителей этого выделения и получить их id.

function selection_parents(){
var empty = new Array()
$target=$(window.getSelection().getRangeAt(0).startContainer.parentNode)
var range = window.getSelection().getRangeAt(0);
for (i=0;i<$target.parents().length;i++)
{
empty[i]=$target.parents()[i].tagName
var $currentobject = $($target).parents()[i];
alert($currentobject.attr("id")) // выводит пустой alert, хотя id у тегов есть.
}
}
Ответить с цитированием
  #2 (permalink)  
Старый 11.09.2012, 14:12
Аспирант
Отправить личное сообщение для vashurin Посмотреть профиль Найти все сообщения от vashurin
 
Регистрация: 01.04.2008
Сообщений: 52

Сообщение от aiaks Посмотреть сообщение
Добрый день =)

Такая проблема, есть пользовательское выделение, необходимо просмотреть всех родителей этого выделения и получить их id.

function selection_parents(){
var empty = new Array()
$target=$(window.getSelection().getRangeAt(0).startContainer.parentNode)
var range = window.getSelection().getRangeAt(0);
for (i=0;i<$target.parents().length;i++)
{
empty[i]=$target.parents()[i].tagName
var $currentobject = $($target).parents()[i];
alert($currentobject.attr("id")) // выводит пустой alert, хотя id у тегов есть.
}
}
Не знаю, как у вас вызывается selection_parents и сколько можно выделить одновременно, но получение всех родителей можно сделать проще:
<html id="id-1">
<head>
    <style type="text/css">
        #id5 {
            width: 100px;
            height: 100px;
            background: red;
        }
    </style>
</head>
<body id="id0">
<div id="id1">
    <div id="id2">
        <div id="id3">
            <div id="id4">
                <div id="id5"></div>
            </div>
        </div>
    </div>
</div>
<script type="text/javascript">
    document.getElementById('id5').onclick = function () {
        var parent = this.parentNode;
        var arr = new Array();
        arr.push(parent);
        while (parent.nodeName != 'HTML') {
            parent = parent.parentNode;
            arr.push(parent);
        }
        for (var i = 0; i < arr.length; i++)  alert('nodeName=' + arr[i].nodeName + '\nid=' + arr[i].id);
    }
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 11.09.2012, 15:37
Интересующийся
Отправить личное сообщение для aiaks Посмотреть профиль Найти все сообщения от aiaks
 
Регистрация: 20.08.2012
Сообщений: 15

Спасибо за ответ, Ваш вариант действительно предпочтительнее.
Единственный оставшийся вопрос это как с помощью:
var range = window.getSelection().getRangeAt(0);

Получить такой же объект как:
document.getElementById('id5')


Всё остальное понятно.
Ответить с цитированием
  #4 (permalink)  
Старый 11.09.2012, 15:54
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

https://developer.mozilla.org/en-US/docs/DOM/Selection
http://www.w3.org/TR/DOM-Level-2-Tra...ge/ranges.html
может здесь чего можно накопать

первый и последний объект в выделении получить можно

<body id="id0">div
<div id="id1">div
    <div id="id2">div
        <div id="id3">div
            <div id="id4">div
                <div id="id5">div</div>
            </div>
        </div>
    </div>
</div>

<script>
document.body.onmouseup = function () {
	var mas = [];
	mas.push(document.getSelection().anchorNode.parentNode.getAttribute('id'));
	mas.push(document.getSelection().focusNode.parentNode.getAttribute('id'));
	alert(mas)
}
</script>

Последний раз редактировалось bes, 11.09.2012 в 15:58.
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2012, 16:27
Интересующийся
Отправить личное сообщение для aiaks Посмотреть профиль Найти все сообщения от aiaks
 
Регистрация: 20.08.2012
Сообщений: 15

Всё получилось =)
Спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 11.09.2012, 16:35
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от aiaks
Всё получилось =)
а выложить результат, первый и последний - это ещё не все,
я лично не понял как получить их все (на сегодня уже зае-ся переводить с английского )

UPD: структура может быть разной, поэтому для произвольного выделения получение первого и последнего ещё не говорит о том, что там между ними, в общем я пока не понял как получить массив их всех

Последний раз редактировалось bes, 11.09.2012 в 16:45.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить атрибуты объекта korner Общие вопросы Javascript 20 21.07.2016 15:49
IE 8 Не удалось получить значение свойства "match": значением объекта является null abstract Internet Explorer 2 26.08.2011 15:27
Получить экземпляр объекта с динамическим "именем" ZLO@der Общие вопросы Javascript 3 16.10.2010 13:15
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 13:20
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00