2016-06-28 3 views
0

Я пишу простую функцию JavaScript, которая принимает td (ячейку таблицы) и либо придает ей красный стиль границы, либо отключает это. Код:Назначение стиля CSS переменной в JavaScript

function doStuff(theCell) 
{ 
    var highlight = "2px solid rgb(255, 0, 0)"; 
    if(borderStyle==highlight) 
    { 
     theCell.style.border=""; 
    } 
    else 
    { 
     theCell.style.border=highlight; 
    } 
} 

Это прекрасно работает. Однако, чтобы попытаться сделать уборщик кода я пытался заменить стиль границы CSS с помощью переменного (объявлено чуть ниже первого):

var borderStyle = theCell.style.border; 

Это хорошо работает, когда я использую его в сравнении равенства, но не тогда, когда Я помещал его в назначение стиля в предложении 'else'.

Должно быть, я пытаюсь сделать что-то очень глупое. Может ли кто-нибудь объяснить.

+0

Где вы определяете borderStyle в своей функции? – hakJav

+0

'theCell.style.border' возвращает' string', позже в блоке 'else', вы просто обновляете строку, а не присваиваете ее элементу. – Rayon

+2

* Я, должно быть, пытаюсь сделать что-то очень глупо. Предположим, что присвоение 'borderStyle' присваивает * ссылку *, и изменения, внесенные в' borderStyle', будут влиять на 'theCell.style.border'. Это предположение неверно. –

ответ

2

Javascript не создает ссылку на объект, если вы пишете такой код, как var borderStyle = theCell.style.border;. Здесь для borderStyle присваивается только значение границы. Объект, который находится theCell, остался целым и невредимым на его месте. Ссылка на него не создается.

+1

Спасибо, а также тем, кто прокомментировал. Мое лицо так же красно, как и граница моих ячеек таблицы (когда я правильно их кодирую). – David

Смежные вопросы