Cкрипт подгрузки кода из другого файла? JavaScript
|
|
[1] legolas [14.06.2015, 20:17] |
Ну что же за чудо Юкоз. Только все получилось, как снова проблема. Из-за огромного кол-ва 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); })();
И так не катит |
|
[2] likbezz [15.06.2015, 03:19] |
legolas, Может всетаки есть какойскрипт подгрузки кода из другого файла или фрэймом? Конечно. Get или просто подгружать сам скрипт - как показано постом выше.
Или всю эту функцию поместить в отдельный файл и подключать уже его. А в файле так: Уже готовый код, .. зачем изобретать велосипед? |
|
[3] legolas [15.06.2015, 14:43] |
Цитата Цитата 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 функция не работает( |
|
[4] likbezz [15.06.2015, 16:46] |
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); })(); - только имена полей подправьте |
|
[5] legolas [15.06.2015, 18:16] |
Но думал так сделать ведь у меня во всех страницах отлично работает Код <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>'); |
|
[6] likbezz [15.06.2015, 18:57] |
legolas, Так никто не делает.
накладно все переделывать, но если больше ничего не поможет, как на других страницах выводить? На каких “других”? Этот код нужен только для страницы добавления/редактирования..
Или что вы хотите? Поясните по-человечески, а не обрывками..
как на других страницах выводить? Да, именно так, если есть доступ к исходному коду шаблона.
Вывести переменную можно множеством способов, включая то, что вы указали - через document.write Какой из них выбрать - зависит от конкретной ситуации. Бывают такие, где document.write ну никак не подходит - например динамическое добавление, тогда можно воспользоваться .innerHTML ... или .appendChild или еще как-нибудь.. |
|
[7] legolas [15.06.2015, 22:00] |
Код <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 в поле. |
|
[8] likbezz [15.06.2015, 22:29] |
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> |
|
[9] legolas [16.06.2015, 14:36] |
Цитата Так тоже никто не делает. Либо добавляют код через 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>
Нужно както с моим кодом совместить. |
|
[10] likbezz [16.06.2015, 18:28] |
legolas, Как сделать, чтобы при редактировании значения из поля обратно выбиралось в чекбоксе? Пробежаться циклом по значениям в поле, и отметить чекбоксы с данными значениями. Как-то так.. |
|
[11] legolas [16.06.2015, 23:48] |
<?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) --------------------------------------------- Да и как рейтинг загетить в результаты поиска? |
|
[12] likbezz [17.06.2015, 00:47] |
legolas, Можно ли так сделать, если результат поиска совпал с названием материала, то открывается не страница поиска, а страница этого материала, если нет то страница поиска? Теоретически, да. - проверить названия материалов на совпадение с запросом и если есть - перейти по ссылке из этого названия. А если таких совпадений более одного?
Да и как рейтинг загетить в результаты поиска? Подкорректировать функцию рейтинга и продублировать в шаблон поисковой выдачи. -- |
|
[13] legolas [17.06.2015, 11:33] |
Вот помоги доделать Код $('.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-класс названия материала |
|
[14] likbezz [17.06.2015, 15:22] |
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() не будет равен запросу - будут присутствовать лишние теги.. Но идею вы поняли - развивайте |
|
[15] legolas [22.06.2015, 22:06] |
Привет. Не смог создать тему. Есть вопрос. Как сделать, чтобы содержимое блока открывалось после исполнения скрипта? Сперва показывает категории в столбец, потом выполняется реплейс всех <tr></tr> и они становятся в строчку, очень некрасиво выходит. |
|