2015-09-26 196 views
1

你好计算器社区,JavaScript if if语句变量

我想通过if语句和其他变量创建一个变量,但它不起作用。如果有人可以帮助我,我会非常感激。

这是我的代码来创建returntouser变量

function userinput() { 
    return returntouser = metaTitle + "\n" + metaDescription + "\n" + metaKeywords; 
} 

现在,我试图让IF函数了“metaTitle”变量。如果用户没有在textform中写入任何内容,那么“metaTitle”变量将不会被添加到“returntouser”变量中。

function userinput() { 
    return returntouser = if (document.getElementById("userinputTitle").length > 0) { return metaTitle } + "\n" + metaDescription + "\n" + metaKeywords; 
} 

谁能告诉我怎样才能if函数添加这个无论是“metaTitle”变量添加到“returntouser”变量或不

+0

一个if语句就是这样的:***语句***。你不能把它放在表达式中。您可以使用三元表达式,但为此,最好将整个if语句放在最后一行之前。对自由变量'returntouser'的赋值看起来很奇怪且不必要。您已经从函数返回值。看起来你试图太难以将所有代码放在一行上。 – Paulpro

+2

你可以使用三元运算符? – Script47

+1

[如何在JavaScript中编写内联IF语句?](http://stackoverflow.com/questions/10270351/how-to-write-an-inline-if-statement-in-javascript) –

回答

1

你必须这样做,在单独的步骤。

function userinput() { 
    var returntouser = ""; 
    if (document.getElementById("userinputTitle").length > 0) { returntouser += metaTitle } 
    return returntouser + "\n" + metaDescription + "\n" + metaKeywords; 
} 
+0

感谢帮助:) – Truzze

6

您可以使用? - 运算符进行条件内联。它也被称为运营商的三元组。更多信息here

例子:

value = 10 > 3 ? "10 is bigger than 3" : "10 is smaller than 3"; 
+1

为什么变量名前的字符串? – Script47

+0

感谢您的帮助:) – Truzze

1

,请尝试把你的行动:

function userinput() { 
    var meta = metaDescription + "\n" + metaKeywords; 
    if (document.getElementById("userinputTitle").length == 0) return meta; 
    return metaTitle + "\n" + meta; 
} 

或出于学习目的:

function userinput() { 
    var meta = [metaDescription, metaKeywords]; 
    if (document.getElementById("userinputTitle")) meta.unshift(metaTitle); 
    return meta.join('\n'); 
} 

或更现代的浏览器

function userinput() { 
    var mt = document.getElementById('userinputTitle')? `${metaTitle}\n` : ''; 
    return `${mt}${metaDescription}\n${metaKeywords}`; 
} 
+0

感谢您的帮助:) – Truzze

+0

我没有注意到模板字符串,并认为您暗示三元运算符只在现代浏览器中可用。 – Paulpro

+0

模板在牙齿中也有点长,但在ES6中只是标准化的。 ergonaut已经覆盖了转台,所以我没有打扰。 – rism