Javascript.RU

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

Формирование рабочей функции
Недавно столкнулся я с проблемой объёмного js.
Суть вот в чём: имеются 11 элементов, которым нужно указать .css({'margin-top':'...'});
Я занёс их в массив:
var sort1=["selectmenu1","selectmenu2","selectmenu3","selectmenu4","selectmenu5","creategame", "gametitle", "playersnumber", "resultcreate", "gamecreate", "listgame"];

и ещё 5 элементов на .css({'margin-left':'...'});:
var sort2 = ["creategame", "gametitle", "playersnumber", "resultcreate", "gamecreate", "listgame"];


Далее, есть ключи на них:
var key1 = ["0.1", "0.15", "0.2", "0.25", "0.3", "0.25", "0.3", "0.38", "0.42", "0.46", "0.15"];
var key2 = ["0.35", "0.375", "0.4", "-0.1", "0.375", "0.21"];


И всё, я циклом прогоняю эти массивы, получаем (jquery) :
$(document).ready(function(){
	setTimeout(function(){
for (var name1 = 0; name1<11; name1++) {document.getElementById("scripter").innerHTML = document.getElementById("scripter").innerHTML + '$(document).ready(function(){$("#' + sort1[name1] + '").css({"margin-top" : "' + key1[name1]*screen.height + '"})});  '}
for (var name2 = 0; name2<5; name2++) {'$("#' + sort2[name2] + '").css({"margin-top" : "' + key2[name2]*screen.width + '"});'}
	},5000);
})


Итогом этого прогона является текст:
$(document).ready(function(){$("#selectmenu1").css({"margin-top" : "76.80000000000001"});})$(document).ready(function(){$("#selectmenu2").css({"margin-top" : "115.19999999999999"});})$(document).ready(function(){$("#selectmenu3").css({"margin-top" : "153.60000000000002"});})$(document).ready(function(){$("#selectmenu4").css({"margin-top" : "192"});})$(document).ready(function(){$("#selectmenu5").css({"margin-top" : "230.39999999999998"});})$(document).ready(function(){$("#creategame").css({"margin-top" : "192"});})$(document).ready(function(){$("#gametitle").css({"margin-top" : "230.39999999999998"});})$(document).ready(function(){$("#playersnumber").css({"margin-top" : "291.84000000000003"});})$(document).ready(function(){$("#resultcreate").css({"margin-top" : "322.56"});})$(document).ready(function(){$("#gamecreate").css({"margin-top" : "353.28000000000003"});})$(document).ready(function(){$("#listgame").css({"margin-top" : "115.19999999999999"});})

в <script id="scripter"></script>


А мне нужно, чтобы строка выводилась, и значения сразу применялись к указанным элементам. Как это сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 24.03.2015, 09:59
Аспирант
Отправить личное сообщение для Нубопрогер Посмотреть профиль Найти все сообщения от Нубопрогер
 
Регистрация: 26.05.2014
Сообщений: 72

До этого нужно было писать 16 (!) строчек однотипного кода:
document.getElementById...  or  $("#..").css...

, и их нельзя было объединить, потому что значения разные.
Ответить с цитированием
  #3 (permalink)  
Старый 24.03.2015, 11:26
Аспирант
Отправить личное сообщение для Нубопрогер Посмотреть профиль Найти все сообщения от Нубопрогер
 
Регистрация: 26.05.2014
Сообщений: 72

Ну вот и решение:
нужно было генерировать стили в спец.тег :
<style id="scripter"></style>
и без всяких jquery обошлось
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение прототипа функции tsigel Общие вопросы Javascript 11 15.05.2014 01:03
Добавление функции внутрь другой функции Lion_astana jQuery 9 28.12.2013 14:33
Установить имя конструктора Андрей Параничев Общие вопросы Javascript 8 17.11.2011 10:09
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21