Cкрипт подгрузки кода из другого файла? JavaScript
|
|
|
2015-06-14Дата: Воскресенье, 14.06.2015, 20:17 | Сообщение # 1 |
Сержант
Группа: Проверенные
Статус: Offline
|
Ну что же за чудо Юкоз. Только все получилось, как снова проблема. Из-за огромного кол-ва option в глобальных блоках теперь непомещается код на страницу, более 75000 символов((((((( Может всетаки есть какойскрипт подгрузки кода из другого файла или фрэймом? Хоть бросай теперь все(Добавлено (14.06.2015, 11:30) --------------------------------------------- Помоему получилось, через document.write Добавлено (14.06.2015, 11:41) --------------------------------------------- На странице редактирования не работае, гдето слэшем перекрыть надо Код e.replaceWith('<input type="text" id="bdF15" class="manFlOth3" style="width:100%" name="other3"><br><select id="bdbd" multiple><script src="/js/actors.js"></script></select>'); Добавлено (14.06.2015, 18:50) --------------------------------------------- Вот полный код:
Код (function(){ var e=$('#addEntForm .manFlOth3'),v=e.val(); e.replaceWith('<input type="text" id="bdF15" class="manFlOth3" style="width:100%" name="other3"><br><select id="bdbd" multiple><script src="/js/actors.js"><\/script></select>'); $('#addEntForm .manFlOth3').val(v); })(); Добавлено (14.06.2015, 20:17) ---------------------------------------------
Код (function(){ var e=$('#addEntForm .manFlOth3'),v=e.val(); var ACTORS='<script src="/js/actors.js"></script>'; e.replaceWith('<input type="text" id="bdF15" class="manFlOth3" style="width:100%" name="other3"><br><select id="bdbd" multiple>'+ACTORS+'</select>'); $('#addEntForm .manFlOth3').val(v); })();
И так не катит
| | |
|
|
2015-06-15Дата: Понедельник, 15.06.2015, 03:19 | Сообщение # 2 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
legolas, Может всетаки есть какойскрипт подгрузки кода из другого файла или фрэймом? Конечно. Get или просто подгружать сам скрипт - как показано постом выше.
Или всю эту функцию поместить в отдельный файл и подключать уже его. А в файле так: Уже готовый код, .. зачем изобретать велосипед?
| | |
|
|
2015-06-15Дата: Понедельник, 15.06.2015, 14:43 | Сообщение # 3 |
Сержант
Группа: Проверенные
Статус: Offline
|
Цитата Цитата likbezz, Пт, 12.06.2015, 02:03:43 Или всю эту функцию поместить в отдельный файл и подключать уже его. А в файле так:
Уже готовый код, .. зачем изобретать велосипед?
Так я им и воспользовался но тег script внутри скрипта не работает
http://hdonline.ucoz.com/IMG_20150615_102825.jpg
Если поставить слэш <\/script> , то скрипт работает, только его содержимое (все мои option) находятся в самом низу страницы.Добавлено (15.06.2015, 11:59) --------------------------------------------- Может конфликтует гдето? Если туда же ставить глобальный блок с тем же содержимым, все на своих местах становится. Добавлено (15.06.2015, 14:16) --------------------------------------------- Нашел как вставить <script> Код <!DOCTYPE html> <html> <head> </head> <body> <script type="text/javascript"> document.write('Подключаем test1.js<br>'); document.write('<script type="text/javascript" src="test1.js"><\x2fscript>'); document.write('Подключаем test2.js<br>'); document.write('<script type="text/javascript" src="test2.js"><\x2fscript>'); document.write('Закончили подключать<br>'); </script> </body> </html>
Все равно весь мой текст из скрипта всамом конце страницы. Может в head скрипт вставить?Добавлено (15.06.2015, 14:43) --------------------------------------------- В head функция не работает(
| | |
|
|
2015-06-15Дата: Понедельник, 15.06.2015, 16:46 | Сообщение # 4 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
legolas, Так я им и воспользовался но тег script внутри скрипта не работает А где в моем коде тег script ?
В head функция не работает( Вот так: Код (function(){ var DIRECTOR='<option value="0">FAMILY</option>'; DIRECTOR+='<option value="Arial">Arial</option>'; DIRECTOR+='<option value="Times">Times</option>'; DIRECTOR+='<option value="Courier">Courier</option>';
var s=$('#addEntForm .manFlOth4'),l=s.val(); s.replaceWith('<input type="hidden" id="bdF16" class="manFlOth4" name="other4"><select id="bdrd" multiple>'+DIRECTOR+'</select>'); $('#addEntForm .manFlOth4').val(l); })();
вместо вот этого: Код (function(){ var e=$('#addEntForm .manFlOth3'),v=e.val(); e.replaceWith('<input type="text" id="bdF15" class="manFlOth3" style="width:100%" name="other3"><br><select id="bdbd" multiple><script src="/js/actors.js"><\/script></select>'); $('#addEntForm .manFlOth3').val(v); })(); - только имена полей подправьте
| | |
|
|
2015-06-15Дата: Понедельник, 15.06.2015, 18:16 | Сообщение # 5 |
Сержант
Группа: Проверенные
Статус: Offline
|
Но думал так сделать ведь у меня во всех страницах отлично работает Код <input type="hidden" id="bdF16" class="manFlOth4" name="other4"><select id="bdrd" multiple><script src="/js/actors.js"></script></select>
а в нем и еще в одном файле Код document.write('а тут около 1000 option');
накладно все переделывать, но если больше ничего не поможет, как на других страницах выводить? Код document.write('<input type="hidden" id="bdF16" class="manFlOth4" name="other4"><select id="bdrd" multiple>'+DIRECTOR+'</select>');
| | |
|
|
2015-06-15Дата: Понедельник, 15.06.2015, 18:57 | Сообщение # 6 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
legolas, Так никто не делает.
накладно все переделывать, но если больше ничего не поможет, как на других страницах выводить? На каких “других”? Этот код нужен только для страницы добавления/редактирования..
Или что вы хотите? Поясните по-человечески, а не обрывками..
как на других страницах выводить? Да, именно так, если есть доступ к исходному коду шаблона.
Вывести переменную можно множеством способов, включая то, что вы указали - через document.write Какой из них выбрать - зависит от конкретной ситуации. Бывают такие, где document.write ну никак не подходит - например динамическое добавление, тогда можно воспользоваться .innerHTML ... или .appendChild или еще как-нибудь..
| | |
|
|
2015-06-15Дата: Понедельник, 15.06.2015, 22:00 | Сообщение # 7 |
Сержант
Группа: Проверенные
Статус: Offline
|
Код <script src="/js/actors.js"></script>
в этом файле у меня код, потому что не влазит в глобальный блок, а код такой:
Код document.write('<option value="0">FAMILY</option><option value="Arial">Arial</option><option value="Times">Times</option><option value="Courier">Courier</option> и так далее.........')
Цитата На каких “других”? Этот код нужен только для страницы добавления/редактирования..
На всех страницах у меня поиск по значениям option:value
Код <div class="col-md-3"> <div class="service-item"> <select size="1" name="q" class="mainBtn2" style="font-weight:bold" onchange="window.location.href='/search/'+this.options[this.selectedIndex].value"> <script src="/js/actors.js"></script> </select> </form> </div> </div>
А на странице добавления выбор из option в поле.
| | |
|
|
2015-06-15Дата: Понедельник, 15.06.2015, 22:29 | Сообщение # 8 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
legolas, вы помните с чего начиналась тема? Вы спросили как сделать оптионы не в строку а в столбик. Как сделать чтобы option в столбец и скрипт работал. Ответ: Созать переменную и добавить в нее все оптионы, каждый с новой строки, вот так: Код var DIRECTOR=''; DIRECTOR+='<option value="Arial">Arial</option>'; DIRECTOR+='<option value="Times">Times</option>'; DIRECTOR+='<option value="Courier">Courier</option>'; Где: DIRECTOR - переменная (имя переменной); DIRECTOR+='<option value="Arial">Arial</option>'; - добавляем в конец переменной строку; ---
Обращаться к переменной нужно по имени, которое == DIRECTOR, соответственно, что бы вывести ее, нужно изменить скрипт так: Код var s=$('#addEntForm .manFlOth4'),l=s.val(); s.replaceWith('<input type="hidden" id="bdF16" class="manFlOth4" name="other4"><select id="bdrd" multiple>'+DIRECTOR+'</select>'); $('#addEntForm .manFlOth4').val(l); Где: DIRECTOR - имя подключенной переменной. ---
Из всего этого следует, что для того, что бы вывести переменную в любой странице нужно подключить ее, в данном случае, так как она находится во внешнем JS-файле, подключить его, и обратиться по имени.
На всех страницах у меня поиск по значениям option:value Код <div class="col-md-3"> <div class="service-item"> <select size="1" name="q" class="mainBtn2" style="font-weight:bold" onchange="window.location.href='/search/'+this.options[this.selectedIndex].value"> <script src="/js/actors.js"></script> </select> Так тоже никто не делает. Либо добавляют код через innerHTML либо пихают целиком select, либо поштучно оптионы.
Добавить код через innerHTTL: Код <div class="service-item"> <select size="1" name="q" class="mainBtn2" id="mainBtnQ" style="font-weight:bold" onchange="window.location.href='/search/'+this.options[this.selectedIndex].value"></select> </div> <script type="text/javascript" src="ссылка_на_файл_с_DIRECTOR"></script> <script type="text/javascript"> document.getElementById('mainBtnQ').innerHTML=DIRECTOR; </script>
Запихнуть целиком select: Код <div class="service-item"> <script type="text/javascript" src="ссылка_на_файл_с_DIRECTOR"></script> <script type="text/javascript"> document.write('<select size="1" name="q" class="mainBtn2" style="font-weight:bold" onchange="window.location.href=\'/search/\'+this.options[this.selectedIndex].value">'+DIRECTOR+'</select>'); </script> </div>
| | |
|
|
2015-06-16Дата: Вторник, 16.06.2015, 14:36 | Сообщение # 9 |
Сержант
Группа: Проверенные
Статус: Offline
|
Цитата Так тоже никто не делает. Либо добавляют код через innerHTML либо пихают целиком select, либо поштучно оптионы.
Добавить код через innerHTTL: Код <div class="service-item"> <select size="1" name="q" class="mainBtn2" id="mainBtnQ" style="font-weight:bold" onchange="window.location.href='/search/'+this.options[this.selectedIndex].value"></select> </div> <script type="text/javascript" src="ссылка_на_файл_с_DIRECTOR"></script> <script type="text/javascript"> document.getElementById('mainBtnQ').innerHTML=DIRECTOR; </script>
Запихнуть целиком select: Код <div class="service-item"> <script type="text/javascript" src="ссылка_на_файл_с_DIRECTOR"></script> <script type="text/javascript"> document.write('<select size="1" name="q" class="mainBtn2" style="font-weight:bold" onchange="window.location.href=\'/search/\'+this.options[this.selectedIndex].value">'+DIRECTOR+'</select>'); </script> </div> Я понял. Буду переписывать. Потом отпишусь.Добавлено (16.06.2015, 14:29) --------------------------------------------- Привет, все сделал все работает, спасибошки. Еще пару вопросов возникло, при редактировании выбранные значения показанны в поле, но ониже не нажаты в чекбоксе, поэтому значения слетают. Как сделать, чтобы при редактировании значения из поля обратно выбиралось в чекбоксе? Добавлено (16.06.2015, 14:36) ---------------------------------------------
Цитата А при редактировании, наоборот: Код <script type="text/javascript"> $(document).ready(function(){ var s=''; $('#bdF14,#bdF15,#bdF16,#bdF17').each(function(){ s+=this.value+','; }); $('#addEntForm div.filterBlock input').each(function(){ if(s.indexOf($(this).next().html())!=-1) this.checked=true; }); }); </script>
Нужно както с моим кодом совместить.
| | |
|
|
2015-06-16Дата: Вторник, 16.06.2015, 18:28 | Сообщение # 10 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
legolas, Как сделать, чтобы при редактировании значения из поля обратно выбиралось в чекбоксе? Пробежаться циклом по значениям в поле, и отметить чекбоксы с данными значениями. Как-то так..
| | |
|
|
2015-06-16Дата: Вторник, 16.06.2015, 23:48 | Сообщение # 11 |
Сержант
Группа: Проверенные
Статус: Offline
|
<?if($PAGE_ID$='add')?> <script type="text/javascript"> $(document).ready(function(){ var s=''; Цитата Пробежаться циклом по значениям в поле, и отметить чекбоксы с данными значениями. Как-то так..
Так сработало: Код <?if($PAGE_ID$='add')?> <script type="text/javascript"> $(document).ready(function(){ var s=''; $('#bdF15').each(function(){ s+=this.value+','; }); $('#addEntForm #bdM42 input').each(function(){ if(s.indexOf($(this).next().html())!=-1) this.checked=true; }); }); </script> <?endif?>
Спасибо!Добавлено (16.06.2015, 22:49) --------------------------------------------- А вот такая идея. Можно ли так сделать, если результат поиска совпал с названием материала, то открывается не страница поиска, а страница этого материала, если нет то страница поиска? Добавлено (16.06.2015, 23:48) --------------------------------------------- Да и как рейтинг загетить в результаты поиска?
| | |
|
|
2015-06-17Дата: Среда, 17.06.2015, 00:47 | Сообщение # 12 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
legolas, Можно ли так сделать, если результат поиска совпал с названием материала, то открывается не страница поиска, а страница этого материала, если нет то страница поиска? Теоретически, да. - проверить названия материалов на совпадение с запросом и если есть - перейти по ссылке из этого названия. А если таких совпадений более одного?
Да и как рейтинг загетить в результаты поиска? Подкорректировать функцию рейтинга и продублировать в шаблон поисковой выдачи. --
| | |
|
|
2015-06-17Дата: Среда, 17.06.2015, 11:33 | Сообщение # 13 |
Сержант
Группа: Проверенные
Статус: Offline
|
Вот помоги доделать Код $('.form-control1').keyup(function(){ var likeThis = [], zapros = $(this).val(), vivod=''; if(zapros.length >= 3){ $.get("/search/", {q: zapros}, function(otvet){ $('.title', otvet).each(function(){ val = $(this).html(); likeThis.push(val); });
.form-control -класс формы поиска .title-класс названия материала
| | |
|
|
2015-06-17Дата: Среда, 17.06.2015, 15:22 | Сообщение # 14 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
legolas, $('.title', otvet).each(function(){ val = $(this).html(); likeThis.push(val); }); Код val = $(this).html(); if(val == zapros){ window.location.href=this.hrf; }; Только не уверен, что будет совпадение - проверять нужно, возможно, запрос кодируется в URIComponent Так же, по-моему, на юкозе подсветка результатов поиска - следовательно, $(this).html() не будет равен запросу - будут присутствовать лишние теги.. Но идею вы поняли - развивайте
| | |
|
|
2015-06-22Дата: Понедельник, 22.06.2015, 22:06 | Сообщение # 15 |
Сержант
Группа: Проверенные
Статус: Offline
|
Привет. Не смог создать тему. Есть вопрос. Как сделать, чтобы содержимое блока открывалось после исполнения скрипта? Сперва показывает категории в столбец, потом выполняется реплейс всех <tr></tr> и они становятся в строчку, очень некрасиво выходит.
| | |
|