Javascript.RU

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

Добавление функции внутрь другой функции
function catCols() {
             var bodyWidth = $('body').width();
                         
            if (bodyWidth < 601) {
                if(#my_div.hasClass('c_100') != true){
                    Тут код 1 ...               
                };
            };
            if (bodyWidth > 600 && bodyWidth < 1001) {
                if(#my_div.hasClass('c_50') != true){
                    Тут код 2 ...               
                };
            };
            if (bodyWidth > 1000 && bodyWidth < 1601) {
                if(#my_div.hasClass('c_33') != true){
                    Тут код 3 ...   
                    
                };
            };
            if (bodyWidth > 1600) {
                if(#my_div.hasClass('c_25') != true){
                    Тут код 4 ...   
                    
                };
            };
        };


В тех местах где написано "Тут код 1", "Тут код 2" и т.д. прописаны различные команды и функции. Есть вещи, которые должны работать на всех страницах сайта, например меню и т.п. НО! На некоторых страницах есть дополнительные функции, которые нужны только на этой конкретной странице, и мне кажется что нет смысла таскать все это в одном общем файле.

Как сделать так, чтобы на некоторых страницах описывать функции для этих страниц и затем добавлять их в общий скрипт с меню и теми вещами которые есть на всех страницах в места "Тут код 1", "Тут код 2" и т.д.?

Надеюсь вы поймете о чем я, если нет, напишите, попробую яснее объяснить.

Заранее благодарю всех за конструктивные предложения.
Ответить с цитированием
  #2 (permalink)  
Старый 26.12.2013, 10:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Lion_astana
Как сделать так, чтобы на некоторых страницах описывать функции для этих страниц и затем добавлять их в общий скрипт с меню и теми вещами которые есть на всех страницах в места "Тут код 1", "Тут код 2" и т.д.?
Как вариант...

(function (){
	if (window.test!==undefined) {test()};
	if (window.test1!==undefined) {test1()};
})();
function test1() {
	alert('ok');
};
Ответить с цитированием
  #3 (permalink)  
Старый 26.12.2013, 13:20
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

можно переписать условия так:
switch (true) {
   case (bodyWidth > 1600):
      fun1();
      break;
   case (bodyWidth > 1000):
      fun2();
      break;
   case (bodyWidth > 600):
      fun3();
      break;
   default:
      fun4();
      break;
}

Последний раз редактировалось Vlasenko Fedor, 26.12.2013 в 13:35.
Ответить с цитированием
  #4 (permalink)  
Старый 26.12.2013, 15:37
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Poznakomlus,
спасибо за совет, так и вправду красивее )

ksa, что-то я не понял эту конструкцию...

Я немного упрощу пример:

catCols();
$(window).resize(catCols);
		 
function catCols() {
$(".h_menu_block").css("display","block").eq(1).css("display","none"); //Например
}


Вот. Это на каждой странице сайта.
А например на странице "Контакты" мне нужно в функцию catCols добавить еще какой-нибудь код. КАК ЭТО СДЕЛАТЬ? Срабатывает несколько проверок, происходит подгрузка контента AJAX-ом, и не хочется еще кучу кода гондобить, просто иногда пару строчек дописать в уже существующую функцию...
Ответить с цитированием
  #5 (permalink)  
Старый 26.12.2013, 21:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Lion_astana
что-то я не понял эту конструкцию...
Она проще простого... Если есть функция - запускай.
Ответить с цитированием
  #6 (permalink)  
Старый 27.12.2013, 13:48
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

ksa,
Да, невнимательно как-то глянул вначале. Это все отлично, но проблема в том, что разные js файлы на странице не видят друг друга. Т.е. общий скрипт я подключаю в head страницы, там прописано ваше условие. Затем на странице, например, "Контакты" подключаю еще один скрипт, внутри которого конструкция, наличие которой проверяет первый скрипт. Но все это не работает, они не знают друг о друге, правильно?

Или я что-то не так проэксперементировал?
Ответить с цитированием
  #7 (permalink)  
Старый 27.12.2013, 13:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Lion_astana
они не знают друг о друге, правильно?
Не совсем так...
Если страница вся загрузилась все скрипты знают дру про друга.
Любой "нижний" (грузится позже) "знает" про "верхний" (грузится ранее)...
Ответить с цитированием
  #8 (permalink)  
Старый 27.12.2013, 14:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Иллюстрация...

one.js
if (window.two) {
	two();
} else {
	alert('Not function two()...');
};

function one() {
	alert(1);
};

two.js
if (window.one) {
	one();
};

function two() {
	alert(2);
};

three.js
if (window.one) {
	one();
};
if (window.two) {
	two();
};

Ну и ХТМЛ...
<!DOCTYPE html>
<html>
<head>
<script src="one.js"></script>
<script src="two.js"></script>
<script src="three.js"></script>
<!--
<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">
</script>
</head>
<body>
</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 27.12.2013, 16:03
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

ksa,
спасибо. Раньше так и думал как ты говоришь, но вчера попробовал и даже удивился. Просто "верхний" скрипт обернул в jQ:
$(function(){
 var getParam = function(){
	$("#my_div").css("background-color","#000");
	 };
			   
});


Потом в нижнем делаю проверку:
if (window.getParam !== undefined) {getParam()};


И ничего не происходило...

Сейчас в верхнем скрипте убрал конструкцию для выполнения скриптов после построения ДОМ-а, оставил так:
var getParam = function(){
	$("#my_div").css("background-color","#000");
	 };


Работает!
Спасибо тебе за помощь большое! С наступающим тебя!
Ответить с цитированием
  #10 (permalink)  
Старый 28.12.2013, 14:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Lion_astana
С наступающим тебя!
И тебя...
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Остановить выполнение функции внутри другой функции ami_moor Общие вопросы Javascript 4 17.09.2013 14:02
Сложение переменных в другой функции inexwai jQuery 3 30.04.2013 11:33
Как вызвать eval в контексте другой функции для доступа к ее локальным переменным? Почемучкин Общие вопросы Javascript 8 29.10.2012 22:31
Проверить данные в функции, которая работает с другой функцией. Andrej_2 Общие вопросы Javascript 5 27.09.2012 22:42
Передача функции другой функции ntro123 jQuery 3 20.02.2011 12:15