Javascript.RU

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

Можно ли сделать выбор имени запускаемого js скрипта из <select>
Привет, народ.
Столкнулся с такой проблемой:
есть список:
<select name="selector" id="selector">
<option selected value='11111'>Скрипт 1</option>
<option value="22222">2</option>
<option value="NNN">Скрипт N</option>
</select>
<script type="text/javascript" charset="windows-1251" src="http://site.org/js/ИМЯ СКРИПТА_1.js"></script>

Может кто подскажет, как можно сделать, чтобы ИМЯ СКРИПТА выбиралось из select и нужный скрипт выполнялся по событию onchange()
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 12.12.2009, 13:21
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,234

http://javascript.ru/tutorial/dom/modify
по событию onchange списка создаете элемент script и крепите к документу
Ответить с цитированием
  #3 (permalink)  
Старый 12.12.2009, 14:46
Новичок на форуме
Отправить личное сообщение для super28 Посмотреть профиль Найти все сообщения от super28
 
Регистрация: 12.12.2009
Сообщений: 4

Спасибо.
Попробовал сделать по примеру, но не получилось.
Не работает.
А как правильно написать?

function setupScript(selectednumber) {
var newScript = document.createElement('script')

newScript.innerHTML='<script type="text/javascript" charset="windows-1251" src="http://site.org/js/'.selectednumber.'.js"></script>'
document.body.appendChild(newScript)
}

<select name="number" id="selector" onchange="setupScript(this.options[this.selectedIndex].value">
<option selected value='11111'>Скрипт 1</option>
<option value="22222">2</option>
<option value="NNN">Скрипт N</option>
</select>
Ответить с цитированием
  #4 (permalink)  
Старый 12.12.2009, 15:58
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,234

http://javascript.ru/ajax/transport/script
вот ссылка с более конкретным кодом
Ответить с цитированием
  #5 (permalink)  
Старый 12.12.2009, 18:41
Новичок на форуме
Отправить личное сообщение для super28 Посмотреть профиль Найти все сообщения от super28
 
Регистрация: 12.12.2009
Сообщений: 4

Вот что получается:

Скрипт select.js
=================
function attachScript(id, src){
src=src+'.js'
var element = dojo.doc.createElement("script")
element.type = "text/javascript"
element.src = src
element.id = id
document.getElementsByTagName("head")[0].appendChild(element)
}

шаблон
================
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="select.js"></script>
</head>

<body>
<select name="sel" id="selector" onchange="attachScript('script1',this.options[this.selectedIndex].value)">
<option selected value='1'>Скрипт 1</option>
<option value='2'>Скрипт 2</option>
<option value='3'>Скрипт 3</option>
</select>
<table id="_out" width="400" height="280" style="background-color:#f2f2f2; border: #cccccc 1px solid; font-family:Tahoma; font-size:12px; color:#000000;" cellpadding="2" cellspacing="0">
<tr><td>Выбор скрипта:</td></tr><tr><td><table id="_in" width=100% height=100% style="background-color:#f2f2f2; font-family:Tahoma; font-size:12px; color:#000000;" cellpadding="0" cellspacing="0">
</table></td></tr><tr name=="script1"></tr>

<script name="myscript" id="myscript" type="text/javascript" charset="windows-1251" src="0.js"></script>
<tr><td align="right">Спасибо за выбор!</td></tr>
</table>

</body>
</html>


скрипт 0.js, выполняемый по умолчанию
--------------------------------
(function()
{
with(navigator)
{
_ = '<img width="24" height="24" src="1.gif">';
document.write('<tr><td colspan=4><u>Привет!</u><td> <span> Скрипт 0</span></td></tr>');
}
})();

скрипт 1.js, должен выполнятся на той же странице при выборе Скрипт 1
-------------------------
(function()
{
with(navigator)
{
_ = '<img width="24" height="24" src="1.gif">';
document.write('<tr><td colspan=4><u>Привет1!</u><td> <span> Скрипт 1</span></td></tr>');
}
})();

скрипт 2.js, должен выполнятся на той же странице при выборе Скрипт 2
(function()
{
with(navigator)
{
_ = '<img width="24" height="24" src="1.gif">';
document.write('<tr><td colspan=4><u>Привет2!</u><td> <span> Скрипт 2</span></td></tr>');
}
})();
...

Не хочет работать в таком виде.

Если в скрипте select.js меняю последнюю строку на:
document.getElementsById("myscript")[0].appendChild(element)

тоже не работает.

Может быть есть идеи какие-то еще?
Спасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 12.12.2009, 19:07
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,234

1)меняем на
var element = document.createElement("script")
2)в подключаемых таким образом скриптах нельзя использовать document.write
после окончания загрузки страницы он работает не так, как вы ожидаете.
используйте innerHTML и другие способы изменения страницы, описанные в первой моей ссылке в теме
Ответить с цитированием
  #7 (permalink)  
Старый 12.12.2009, 21:22
Новичок на форуме
Отправить личное сообщение для super28 Посмотреть профиль Найти все сообщения от super28
 
Регистрация: 12.12.2009
Сообщений: 4

Спасибо за помощь.
Попробую так сделать.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли сделать так... Абум Общие вопросы Javascript 1 04.07.2009 17:49