Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.01.2011, 19:49
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

мой движок ксс селекторов
function findelements(selector){
elem=[];
style=document.createElement('div');
rand=Math.floor(Math.random() * 1000);
style.innerHTML='<style>'+selector+'{z-index: ' + rand + '}</style>';
document.body.appendChild(style);
all=document.getElementsByTagName('*');
for(var i=0;i<all.length;i++)
{
if(window.getComputedStyle)
z=window.getComputedStyle(all[i],null).zIndex;
else
z=all[i].currentStyle.zIndex;
if (z==rand)
{
elem.push(all[i]);
}
}
return elem;
}


старался обьединить быстродейтсвие и краткость кода
оцените
принцип такой:
создаём style тег туда пишем
(заданый селектор) {z-index: случайное число}
потом цикл по всем элеиментам на стр
если з-индекс равен тому сл.числу то добавляем в масив
Ответить с цитированием
  #2 (permalink)  
Старый 07.01.2011, 20:01
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Очень плохая идея.
z-Index уже вполне может использоватся для каких-либо элементов.
а вы его внаглую меняете, и не возвращаете обратно
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2011, 20:06
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

function findelements(selector){
all=document.getElementsByTagName('*');
for(var i=0;i<all.length;i++)
{
if(window.getComputedStyle)
all[i].defaultzindex=window.getComputedStyle(all[i],null).zIndex;
else
all[i].defaultzindex=all[i].currentStyle.zIndex;
}
elem=[];
style=document.createElement('div');
rand=Math.floor(Math.random() * 1000);
style.innerHTML='<style>'+selector+'{z-index: ' + rand + '}</style>';
document.body.appendChild(style);
for(var i=0;i<all.length;i++)
{
if(window.getComputedStyle)
z=window.getComputedStyle(all[i],null).zIndex;
else
z=all[i].currentStyle.zIndex;
if (z==rand)
{
elem.push(all[i]);
}
all[i].style.zIndex=all[i].defaultzindex;
}
return elem;
}


вот переделал
сейчас пытаюсь вставить его в jquery вместо стандартного движка
подниму им рейтинг
там правда через сервер зделано ,придется попотеть
Ответить с цитированием
  #4 (permalink)  
Старый 07.01.2011, 20:11
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

Сообщение от Matre Посмотреть сообщение
вот переделал
сейчас пытаюсь вставить его в jquery вместо стандартного движка
подниму им рейтинг
там правда через сервер зделано ,придется попотеть
Без комментариев Уважаемый, какой сервер? Вы хоть знаете сколько существует разных фреймворков и что алгоритмы селекторов перерабатываются десятки раз, а уж то что вы своим поднимите рейтинг jquery ...
Ответить с цитированием
  #5 (permalink)  
Старый 07.01.2011, 20:11
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

вы не прочли мою первую часть сообщения.
нельзя вот так брать, и использовать z-index для сторонних целей

и не надейтесь, что вам удастся воткнуть ваш говнокод в jQUery
им, он нафиг не нужен
Ответить с цитированием
  #6 (permalink)  
Старый 07.01.2011, 20:15
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Цитата:
нельзя вот так брать, и использовать z-index для сторонних целей
почему?я ведь всё на место возращаю,до и после вызова функции никаких изменений нет!

а на счет говнокода и "никому ненужен" время покажет
Ответить с цитированием
  #7 (permalink)  
Старый 07.01.2011, 20:26
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Matre
а на счет говнокода и "никому ненужен" время покажет
не надо из себя строить непризнанного гения.
вы считаете, что за несколько десятков лет, никому еще не пришло в голову так делать?

нужность, вы правы, может показать время.
и время уже показало ненужность такой идеи. либо вы мессия
а вот говнокод можно увидеть, не ожидая года, и мнение многих людей.
Сообщение от Matre
rand=Math.floor(Math.random() * 1000);
это значение вполне может быть уже использовано каким-либо элементом.
и он попадет в список элементов
Сообщение от Matre
all[i].style.zIndex=all[i].defaultzindex;
замечательно
теперь, вы еще больше наговнокодили.
вы только что искусственно задали всем элементам z-index, не зависящий от таблицы стилей
Ответить с цитированием
  #8 (permalink)  
Старый 07.01.2011, 20:33
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Цитата:
это значение вполне может быть уже использовано каким-либо элементом.
вероятность этого 0.1% ненадо надеятся на худшее! будьте оптимистичнее

Цитата:
вы только что искусственно задали всем элементам z-index, не зависящий от таблицы стилей
не понимаю..я ведь в начале беру заданные z-index а потом меняю обратно все ведь зависит
Ответить с цитированием
  #9 (permalink)  
Старый 07.01.2011, 20:47
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Опишите свою идею более подробно, а то не совсем ясно что вы вообще хотите сделать, может вам и не прийдется изобретать велосипед
Сообщение от Matre
сейчас пытаюсь вставить его в jquery вместо стандартного движка
если jQuery является OpenSource проектом это не значит, что туда можно вставить (в базовую сборку) любой говнокод (желающих как грязи, в разы больше чем на пост президента ).
Сообщение от Matre
вероятность этого 0.1% ненадо надеятся на худшее! будьте оптимистичнее
у вас явно с восприятием информации проблемы, прислушайтесь к тому что вам говорят.
Сообщение от Matre
не понимаю..я ведь в начале беру заданные z-index а потом меняю обратно все ведь зависит
с чего вы это взяли?

Последний раз редактировалось monolithed, 07.01.2011 в 20:49.
Ответить с цитированием
  #10 (permalink)  
Старый 07.01.2011, 20:48
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Matre
вероятность этого 0.1% ненадо надеятся на худшее! будьте оптимистичнее
в программирование не должно быть "авось прокатит"
есть задачи, где даже вероятность коллизий Md5 является слишком большой
а вы тут говорите о такой гигантской величине как 0.1%!!!
Может быть вы не в курсе, но за этими числами стоят потерянные деньги,и для некоторых сайтов тот факт, что каждый тысячный покупатель не сможет провести покупку из-за вашего говнокода - весьма немаловажный фактор достойный увольнения нескольких не уследивших разработчиков


Сообщение от Matre
не понимаю..я ведь в начале беру заданные z-index а потом меняю обратно все ведь зависит
вот именно, что не понимаете.
вам бы сначала подрасти в профессиональном уровне, а затем горы ворочать
запустите этот код следующим образом:
1)нажмите ссылку "change z-index"
нижний логотип станет поверх второго
после перезагрузите страницу
2)нажмите сперва ссылку "findelements", а затем только "change z-index"
как видим после вашей функции, остальной код не работает так как ожидалось


<html>
<head>
<script type="text/javascript">
function findelements(selector){
all=document.getElementsByTagName('*');
for(var i=0;i<all.length;i++)
{
if(window.getComputedStyle)
all[i].defaultzindex=window.getComputedStyle(all[i],null).zIndex;
else
all[i].defaultzindex=all[i].currentStyle.zIndex;
}
elem=[];
style=document.createElement('div');
rand=Math.floor(Math.random() * 1000);
style.innerHTML='<style>'+selector+'{z-index: ' + rand + '}</style>';
document.body.appendChild(style);
for(var i=0;i<all.length;i++)
{
if(window.getComputedStyle)
z=window.getComputedStyle(all[i],null).zIndex;
else
z=all[i].currentStyle.zIndex;
if (z==rand)
{
elem.push(all[i]);
}
all[i].style.zIndex=all[i].defaultzindex;
}
return elem;
}

</script>
<style>
.img1{
	position:absolute;
	left:10px;
	top:10px;
	z-index:5;
}
.img1_new{
	position:absolute;
	left:10px;
	top:10px;
	z-index:7;
}
.img2{
	position:absolute;
	left:20px;
	top:20px;
	z-index:6;
}
</style>
</head>
<body>
<img id="img1" class="img1" height="44" width="100" border="0" alt="Яндекс" src="data:image/png;base64,iVBOR....ggg==">
<img class="img2" height="44" width="100" border="0" alt="Яндекс" src="data:image/png;base64,iVB...rkJggg==">
<br /><br /><br /><br /><br /><br /><br />
<a href="#" onclick="findelements('a');return false;">findelements</a>
<a href="#" onclick="document.getElementById('img1').className='img1_new';return false;">change z-index</a>

</body>
</html>


PS getComputedStyle который вы берете в начале, и свойство style.zIndex, выставляемое в конце - это абсолютно разные вещи.
и последний до прихода вашей функции у большинства элементов равен пустой строке

Последний раз редактировалось Илья Кантор, 09.01.2011 в 13:43.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой графический движок: SVG vs Canvas stryaponoff Общие вопросы Javascript 5 29.06.2010 16:59