Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   js поиск div'ов по их координатам top/left (https://javascript.ru/forum/css-html/14441-js-poisk-div%27ov-po-ikh-koordinatam-top-left.html)

Jekel 16.01.2011 23:55

js поиск div'ов по их координатам top/left
 
реально сделать как-то так?

var diva = document.getElementById('box').style.top = '100px' && style.left = '50px';


чтобы оно присвоило переменной адрес этого дива если он есть а если нету - создало..

Shaci 17.01.2011 00:08

ну по координатам можно див найти, а почему нет

Aetae 17.01.2011 00:08

А просто проверка есть ли div с id==box чем плоха?
if(!document.getElementById('box')) {document.body.appendChild(document.createElement('div')).style.cssText="top:100px;left:50px;position:absolute'}

Jekel 17.01.2011 00:10

не плоха, просто задал себе такой вопрос..колупал код пол-дня и ничерта не пашет..вот теперь интерестно как это сделать

Jekel 17.01.2011 00:14

Цитата:

Сообщение от Aetae (Сообщение 88283)
А просто проверка есть ли div с id==box чем плоха?
if(!document.getElementById('box')) {document.body.appendChild(document.createElement('div')).style.cssText="top:100px;left:50px;position:absolute'}

Спасибо, это я понимаю. Интерестно существует ли вариант поиска по координатам?

Aetae 17.01.2011 00:15

Тогда
if(document.elementFromPoint(100,50).className!="box") {document.body.appendChild(document.createElement('div')).style.cssText="top:100px;left:50px;position:absolute'}
//Проверку лучше делать по классу, чтоб наверняка выделить именно те элементы, что вам нужны.

Но вероятность 99%, что конкретно ваша проблeма решается другим способом.

\upd
ах да, elementFromPoint может вернуть также текстовую ноду, так что для использования надо будет немного усложнить.

Jekel 17.01.2011 00:26

интерестно...но не то немного.
есть код
<div id="map" class="map">
<div id="box" class="box" style="margin-top:0px; margin-left:0px;"></div>
<div id="box" class="box" style="margin-top:100px; margin-left:200px;"></div>
</div>


надо найти див который margin-top:100px; margin-left:200px; и присвоить его адресс переменной
короче говоря поиск дива по параметрам его стиля)

Shaci 17.01.2011 00:33

var computedStyle = element.currentStyle || window.getComputedStyle(element, null);

а, если стиль прописан inline-записью, то можно через style

Jekel 17.01.2011 00:49

не понимаю...

Aetae 17.01.2011 00:56

Цитата:

Сообщение от Jekel (Сообщение 88291)
интерестно...но не то немного.
есть код
<div id="map" class="map">
<div id="box" class="box" style="margin-top:0px; margin-left:0px;"></div>
<div id="box" class="box" style="margin-top:100px; margin-left:200px;"></div>
</div>

Нет такого кода. Id - уникальный идентификатор.

Цитата:

Сообщение от Jekel (Сообщение 88291)
надо найти див который margin-top:100px; margin-left:200px; и присвоить его адресс переменной
короче говоря поиск дива по параметрам его стиля)

Как-то так тогда:
function f(container){
  var div=container.getElementsByTagName('div'),i=div.length,style;
  while(i--){
    style=div[i].currentStyle||window.getComputedStyle(div[i], null);
    if(style.marginTop=='100px'&&style.marginLeft=='200px')return div[i]
  }
  return container.appendChild(document.createElement('div')).style.cssText="margin-top:100px;margin-left:200px'
}


Но ещё раз говорю: опишите решаемую задачу, гарантирую, что это должно делаться по другому.)


Часовой пояс GMT +3, время: 13:20.