Неправильная передача объекта в массиве
При работе с "input" и "select" столкнулся с проблемой получения их свойств, если свойства запрашиваются из массива.
var doc = document,
iType = [0, (doc.getElementById('iType').selectedIndex)],
iSpan = [0, doc.getElementById('iSpan').value],
...
В общем в iType передается целиком объект "Select" с id='iType', причем перебивает весь массив iType! (с input тоже самое, запрос свойства игнорирует) А если так:
var doc = document,
T=doc.getElementById('iType').selectedIndex,
S=doc.getElementById('iSpan').value,
iType = [0, T],
iSpan = [0, S],
...
тогда все нормально... В чем проблема??? |
Так... не в этом месте теперь ошибка...
function run_up () {
var doc = document,
T=doc.getElementById('iType').selectedIndex,
S=doc.getElementById('iSpan').value,
iType = [0, T],
iSpan = [0, S],
...
только на этой стадии все норм работает, а далее... если мы из другой функции запросим эти массивы... (в этом же модуле) то получим не значения, а опять же объекты "input" и "select". Почему они перебиваются вдруг? У меня нельзя объявлять эти переменные в нужной функции... они должны быть доступны во всех, а запихивать их в каждую необходимую функцию - как то не правильно. |
Цитата:
<select id='iType'>
<option></option>
<option selected>1</option>
<option>2</option>
</select>
<input type='text' id='iSpan' value='test' />
<script type="text/javascript">
var
doc = document,
iType = [0, doc.getElementById('iType').selectedIndex],
iSpan = [0, doc.getElementById('iSpan').value]
alert(iType[1]);
alert(iSpan[1]);
</script>
Брехня. Все работает... :D |
Цитата:
function run_up () {
var doc = document,
iType = [0, doc.getElementById('iType').selectedIndex],
iSpan = [0, doc.getElementById('iSpan').value],
};
function run(){
run_up();
alert(iType[1]);
alert(iSpan[1]);
}
Вот так не работает! Или я тут их делаю privat а не global ?) но тогда каким макером мне их сделать глобальными? они должны записываться только по запросу... вытаскивать их в отдельный js ? PS. сори если туплю, но javascript я изучаю можно сказать третий день только) (после delphi и c++ на javascript... где нет элементарно - классов - короче попа это :( ) |
Цитата:
Цитата:
Цитата:
|
там можно сделать родительский класс и от него унаследовать другие...
Ну или просто все объединить в 1 класс и функции манипулирующие с переменными данного класса будут работать нормально! |
Цитата:
/**
* @constructor
*/
function A() {
this.foo = 'abc';
}
A.prototype.bar = function() {
};
/**
* @constructor
* @inherits A
*/
function B() {
// вызываем конструктор A
A.call(this);
// теперь имеем this.foo = 'abc'
}
// Прототипом для объектов B будет новый объект, основанный на (имеющим прототипом) прототипе конструктора A
// вторым агрументом восстанавливаем свойство constructor
B.prototype = Object.create(A.prototype, {
constructor: {value: B}
});
// теперь при вызове конструктора будем иметь this.bar = function...
|
охты, интересненько) спасиб!
|
Я написал одно, а код делает другое. Вот код, где прототипом является экземпляр другого "класса":
/**
* @constructor
*/
function A() {
this.foo = 'abc';
}
A.prototype.bar = function() {
};
/**
* @constructor
* @inherits A
*/
function B() {
}
// Прототипом для объектов B будет экземпляр A
B.prototype = new A;
Это часто используется, однако свойства, созданные в A, будут в прототипе B, а значит общими для всех экземпляров B. Плюс, вызов конструктора A не всегда требуется. Вообще же, JS не дает возможности унаследовать свойства. Это можно сделать только через вызов родительского конструктора. А конструктор помимо установки свойств может делать нежелательные действия. |
| Часовой пояс GMT +3, время: 06:14. |