Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
654 views
in Technique[技术] by (71.8m points)

javascript - If case is always true, but probably false

I have a simple form drop-down, and I want to display something different depending on the selection value. I have a variable called connectiontype that comes in with the correct values from the drop down, but the if/else statements don't seem to work - I always end up with red. Any ideas as to why?

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();">

Here's the javascript, simplified.

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);
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You are using = (assignment) instead of == (comparison).

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

When you have an assignment, eg: lhs = rhs the whole expression returns whatever rhs is. So:

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

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

if ('red') { ...  

Since 'red' (a non-empty string) is "truthy" in JavaScript, the if is always true and your html variable will always be set to 'Red'.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...