javascript print variable1 || variable2

javascript print variable1 || variable2

本文关键字:variable2 variable1 print javascript      更新时间:2023-09-26

我有一个扩展名为的文件

.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);