Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   в Firefox не обрабатывается скрипт! (https://javascript.ru/forum/css-html-firefox-mizilla/11008-v-firefox-ne-obrabatyvaetsya-skript.html)

ildaroit 02.08.2010 09:55

в Firefox не обрабатывается скрипт!
 
Добрый день, вот скрипт взятый на этом сайте - в зависмости от того то выбрано в Селекте - отображать нужную инф. в Текстареа, он отлично работает в ИЕ, но ни в ФФ ни в Хроме не работает, посм пж в чем может быть дело - возм есть другие варианты реализации данной задачи?

<form>
<select name="tema" id="level" onchange="showNames(this.value)" size=3>
<option value="Вариент1">Вариент1</option>
<option value="Вариент2">Вариент2</option>
</select>
<br />
<textarea id="names" rows="8" cols="40" name="names">
</textarea>
</form>

<script>
var Вариент1 = Array("Вариент1Вариент1");
var Вариент2 = Array("Вариент2Вариент2");

function showNames(v){
var mas = eval(v);
var el = document.getElementById("names");
while(el.childNodes.length>0){
el.removeChild(el.childNodes[el.childNodes.length-1]);
}
for(var i=0;i<mas.length;i++){
var opt = document.createElement("text");
opt.innerHTML=mas[i];
el.appendChild(opt);
}
}
</script>

Заранее Благодарю.

рони 02.08.2010 10:06

замени
var opt = document.createElement("text");
opt.innerHTML=mas[i];

на
var opt = document.createTextNode(mas[i]);

и буде тобе Вариент счастья )))

ildaroit 02.08.2010 10:33

Отлично Друг! Все работает!
А можешь пояснить почему ИЕ и ФФ по разному обрабатывают этот скрипт?
И если не трудно вкратце коммент к этим строкам, я буду очень ну очень тебе благодарен!
:thanks:

ildaroit 02.08.2010 11:36

кстатт вот такую функцию мне посоветовали взамен:

function showNames(v){
var textarea = document.getElementById("names");
textarea.value = eval(v);
}
:)

x-yuri 02.08.2010 20:20

так лучше, осталось избавиться от eval и русских названий переменных

<form>
<select name="tema" id="level" onchange="showName(this.value)" size=3>
<option value="1">Вариент1</option>
<option value="2">Вариент2</option>
</select>
<br />
<textarea id="names" rows="8" cols="40" name="names">
</textarea>
</form>
<script type="text/javascript">
var match = {
    1: "Вариент1Вариент1",
    2: "Вариент2Вариент2"
};
function showName( v ){
    var textarea = document.getElementById('names');
    textarea.value = match[v];
}
</script>


если же нужно просто текст текущего пункта выдавать
<form>
<select name="tema" id="level" onchange="showName(this.value)" size=3>
<option value="1">Вариент1</option>
<option value="2">Вариент2</option>
</select>
<br />
<textarea id="names" rows="8" cols="40" name="names">
</textarea>
</form>
<script type="text/javascript">
function showName( v ){
    var select = document.getElementById('level');
    var textarea = document.getElementById('names');
    textarea.value = select.options[select.selectedIndex].innerHTML;
}
</script>


Часовой пояс GMT +3, время: 21:49.