Если регистр всегда верный, но, вероятно, ложный - PullRequest
1 голос
/ 16 ноября 2011

У меня есть простой выпадающий список форм, и я хочу отобразить что-то другое в зависимости от значения выбора.У меня есть переменная с именем connectiontype , которая содержит правильные значения из выпадающего списка, но операторы if / else, похоже, не работают - я всегда заканчиваю красным.Любые идеи о том, почему?

Add 
<select name="connection_type" id="connection_type">
  <option value="red">Red</option>
  <option value="green">Green</option>
  <option value="blue">Blue</option>
</select>
connection 

<input type="button" value="Go" onclick="javascript:addDataSource();">

Вот javascript, упрощенный.

function addDataSource() {
    DSN++;

    connectiontype = $("#connection_type").val();

    if (connectiontype = 'red') {
        var html =   'Red';
     } else if (connectiontype = 'green') {
        var html =   'Green';
    } else {
        var html =   'Blue';
    }

    addElement('DSN', 'div', 'DSN-' + DSN, html);
    console.log(DSN);
}   

function addElement(parentId, elementTag, elementId, html) {
    var p = document.getElementById(parentId);
    var newElement = document.createElement(elementTag);
    newElement.setAttribute('id', elementId);
    newElement.innerHTML = html;
    p.appendChild(newElement);
}

1 Ответ

8 голосов
/ 16 ноября 2011

Вы используете = (назначение) вместо == (сравнение).

if (connectiontype == 'red') {
    ...
} else if (connectiontype == 'green') {
    ...
}

Если у вас есть присваивание, например: lhs = rhs, все выражение возвращает то, чем является rhs. Итак:

if (connectiontype = 'red') { ...

// is equivalent to (as far as the "if" is concerned):

if ('red') { ...  

Поскольку 'red' (непустая строка) в JavaScript является "правдивым", if всегда верен, а ваша переменная html всегда будет установлена ​​на 'Red'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...