Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Глобальные переменные при выборе в Select / Option не сохраняются (https://javascript.ru/forum/dom-window/60349-globalnye-peremennye-pri-vybore-v-select-option-ne-sokhranyayutsya.html)

top89 23.12.2015 20:12

Глобальные переменные при выборе в Select / Option не сохраняются
 
Добрый день! Может, здесь кто-нибудь подскажет
Есть два поля Select:

<script src="00.js" type="text/javascript"></script>
    <select size="4" onclick="SelectElem(this.value)">
        <option value="10">elem 10</option>
        <option value="20">elem 20</option>
        <option value="30">elem 30</option>
    </select>
    <select size="4" onclick="SelectOper(this.value)">
        <option value="1010">oper 1010</option>
        <option value="1020">oper 1020</option>
        <option value="1030">oper 1030</option>
    </select>
    <input type="button" value="ShowID" onclick="ShowID()">
    <div id="info1">info1</div>


Есть скрипт (00.js), в котором должны сохраняться выбранные в полях значения ElemID и OperID (они оформлены как глобальные):

var ElemID;
var OperID;
 
function SelectElem(ElemID) {
    document.getElementById('info1').innerHTML='SelectElem : ElemID = '+ElemID+' OperID = '+OperID;
}
function SelectOper(OperID) {
    document.getElementById('info1').innerHTML='SelectOper : ElemID = '+ElemID+' OperID = '+OperID;
}
function ShowID() {
    alert('ShowID : ElemID = '+ElemID+' OperID = '+OperID);
}


Но при выборе в одном поле пропадает значение в другом, например:
SelectElem : ElemID = 20 OperID = undefined (при выборе в первом) или
SelectOper : ElemID = undefined OperID = 1020 (при выборе во втором)

При нажатии ShowID (которая должна показать обе) вообще:
ShowID : ElemID = undefined OperID = undefined

1) Почему значения переменных не сохраняются, они же вроде глобальные и
2) как сделать, чтобы сохранялись?
3) Или как-то по-другому, чтобы оба выбранных значения сохранялись и могли быть использованы в дальнейшем

Вот здесь показано, как это работает (не так, как надо)
http://sprav89.ru/00.php

Спасибо!

top89 23.12.2015 22:55

Короче, получилось вот так:
1) Объявляем переменные текстовыми,
2) задаем значения через промежуточные параметры ElemID_ и OperID_
var ElemID ="";
var OperID ="";

function SelectElem(ElemID_) {
	ElemID = ElemID_;
	document.getElementById('info1').innerHTML='SelectElem : ElemID = '+ElemID+' OperID = '+OperID;
}
function SelectOper(OperID_) {
	OperID = OperID_; 
	document.getElementById('info1').innerHTML='SelectOper : ElemID = '+ElemID+' OperID = '+OperID;
}
function ShowID() {
	alert('ShowID : ElemID = '+ElemID+' OperID = '+OperID);
}


Всем спасибо! :)

Dilettante_Pro 26.12.2015 17:44

Просто в первом варианте внутри функций вы работали не с глобальными переменными, а с локальными с такими же именами, определенными в заголовках функций, а во втором - присваиваете значение локальных переменных глобальным


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