javascript print variable1 || variable2
javascript print variable1 || variable2
我有一个扩展名为的文件
.doc or .docx
我想这样链接:
document.getElementById("file").innerHTML = "View file sent <a href='../folder/filename" +
(what syntax do I need to add here if I wanted to print which extention file is exist on that folder)
在PHP中,我们可以实现
var1 = ".doc";
var2 = ".docx";
var1 ? var1 : var2;
在JavaScript中,这个等价物是什么?
JavaScript中的第三级运算符
JavaScript中存在do的第三级运算符:
var var1=".doc";
var var2=".docx";
alert(var1 ? var1 : var2);
证明:http://jsfiddle.net/gRMf2/
它将这样工作(jsfiddle):
alert(var1 ? var1 : var2);
使用未定义的变量
但是,如果var1
可以是未定义的,那么您将得到一个错误(proof:jsfiddle)。在这种情况下,写这将解决问题(证明:jsfiddle):
alert(typeof var1 !== 'undefined' ? var1 : var2);
在javascript中,var1 || var2
与php的var1 ? var1 : var2
相同。
document.getElementById("file").innerHTML = "View file sent <a href='../folder/filename" + (var1 || var2);
JavaScript无法访问文件系统。即使是这样,它也将是最终用户的本地文件系统。您需要检查该文件是否存在于PHP(或您选择使用的任何服务器端语言)中。
我不确定你在这里做什么:
var1=".doc";
var2=".docx";
var1? var1 : var2;
这将始终返回".doc",因为无论您使用的是PHP还是Javascript,var1的计算结果都将始终为true。
听起来你可能在追求这样的东西:
// this function is from http://stackoverflow.com/a/3646923/1188942
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
var ext;
if (UrlExists("http://www.mywebsite.com/folder/file.doc"))
ext = ".doc";
else
ext = ".docx";
这在Javascript中非常相似:
var doc = ".doc";
var docx = ".docx";
var ext = doc ? doc : docx;
alert(ext);