Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

gogohero avatar gogohero 8 Точки

[Technical Issue] JavaScript DOM

Пичове имам един въпрос. 
var color = document.getElementById("headerText").style.color = "red";

ми върши работа, ама за кво
var color = document.getElementById("headerText").style.color;
color = "red "
няма същия ефект т'ва е на javascript ако някой се сеща да пише

Mod Edit: Моля, спазвайте правилата на форума преди да пускате тема.

№9 Когато пускате теми във форума, заглавията на темите трябва да спазват следните концепции....

Тагове:
0
JavaScript Fundamentals 07/12/2014 17:20:47
RoYaL avatar RoYaL Trainer 6849 Точки

Щото не се пази референция.

Предполагам, че и на другите езици, на които си писал е така.

Асайнването на примитивни типове, в случая стрингове от една променлива в друга не се случва по референция.

style.color не се променя, когато променши твоята локална color.

Също и като имаш var a = 100; b = a; b = 200; то "a" продължава да е 100.

Така е и при обектите

class X {

    public int prop = 100;

}

X x = new X();

int y = x.prop;

y = 200;

 

И x.prop продължава да е 100, съответно не променяш нищо на обекта от тип X.

Представи си все едно style е пропърти от тип Style (някакъв клас). Който има свои попъртита, в случая color. За да се промени цвета на елемента, трябва пропъртито color в обекта style да се промени. Само, че ти променяш променливата "color", а пропъртито "color" от обекта "style" остава непроменено, точно като в примена с класа Х. Ако искаш си го представи с имената при теб:

class Element {

    public Style style;

}

class Style {

    public string color = "red";

}

Element element = new Element();

element.style = new Style();

System.out.println(element.style.color); // red

element.style.color = "blue"; // цвета на елемента се сменя на син

System.out.println(element.style.color); // blue

String color = element.style.color;

color = "green"; // цвета не се променя

System.out.println(element.style.color); // blue (ето за това не се променя)

 

P.S.: В първия пример, който си дал, ми се струва абсолютно излишно използването на локална променлива "color", която впоследствие предполагам е напълно неизползваема, защото към нея ще се асайнне ритърн тайпа от промяната на цвета, който е void (null, undefined?)

 

2
06/12/2014 20:28:39
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.