2014-09-08 2 views
0

공백이있는 다른 필드의 값을 사용하여 한 필드의 값을 업데이트하고 싶습니다. value가 null 인 경우에는 공백을 추가하지 않아야합니다. 가치 집합에 IF를 사용할 수 없기 때문에 어떤 논리를 사용해야합니까?변수를 동적으로 업데이트하십시오. JS

document.getElementById("target").value= Constant+if(name){" "+this.value}+if(age){" "+this.value}+if(height){" "+this.value}; 
+0

을 배우는 방법을 찾는다. – Odin

+0

** if ** 문 안에는'if' ** 문 **을 사용할 수 없습니다. [* 조건부 연산자 *] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)를 찾고 있습니다. –

+0

나는 논리를 의미하는 것을 알고있다. 나는 이미 IF를 사용할 수 없다고 말했다. – Odin

답변

1

당신이 경우 사용할 수있는 함수에 문자열 서식 코드를 넣어 진술.

document.getElementById("target").value = formatValue(); 

function formatValue(){ 
    var formattedString = Constant; 

    if(name){ 
     formattedString += " " + name; 
    } 

    if(age){ 
     formattedString += " " + age: 
    } 

    if(height){ 
     formattedString += " " + height: 
    } 

    return formattedString; 
} 

당신이 명명 된 기능이 자동 호출하는 익명 함수를 사용하지 않으려면 : 그냥 원하는 변화를하지 말도록 내가 필요한 필드를 사용하고

document.getElementById("target").value = (function(){ 
    var formattedString = Constant; 

    if(name){ 
     formattedString += " " + name; 
    } 

    if(age){ 
     formattedString += " " + age: 
    } 

    if(height){ 
     formattedString += " " + height: 
    } 

    return formattedString; 
})(); 
+0

포맷팅을 위해 다른 기능을 사용할 수 있다는 것을 알고 있습니다.) 그게 핵심은 아니 었습니다. 어쨌든 고마워! – Odin

+0

@Odin 대신 자체 호출 익명 함수를 사용할 수 있습니다. –

1

당신이 삼항 연산자라고 찾고 있습니다. 반환 할 부울 조건 인 ?true 값이 이어지고 : 후에 false 값이 반환됩니다.

console.log((name ? name : '') + (age ? age : '')); 

당신이하고있는 일에 대해, 나는 이런 방식으로 많은 수의 삼자를 연결하지 않을 것입니다. 배열을 만들고 가입하십시오. 당신이 Array.filter (새로운 브라우저)를 사용할 수있는 경우

var parts = []; 
if (name) { 
    parts.push(name); 
} 
if (age) { 
    parts.push(age); 
} 
// etc. etc. 

console.log(parts.join(' ')); 

, 모든 if 문을 필요로하지 않는, 당신의 배열을 단순화 할 수 있습니다 : http://www.devign.me/javascript-tip-remove-falsy-items-out-of-an-array

+0

I 이전과 같은 문제에 빠져 있는데, 여분의 공간이 있습니다. 예를 들어 name이 없다면 ** constant + ''+ '+ age +' '+ height **를 갖습니다. – Odin

+0

@Odin'join' 메소드를 사용하지 않을 경우. 그리고 위의 변수 뒤에 항상 공백을 추가 할 수 있습니다. 나는 단순함을 위해서하지 않았으므로 나는 당신에게 삼원 항법을 설명 할 수 있었다. – Brad

관련 문제