我正在尝试根据在几个多选框中选择的选项构建一个表(使用sql)。这是我的javascript / jquery代码:
function make_table(whichButton)
{
console.log("Whichbotton = " + whichButton);
//var prog = $("#program option:selected").val().join(" ");
var prog = $("#program").val() || [];
console.log("prog first= " + prog);
prog = prog.join(" ");
console.log("prog second= " + prog);
var sch = $("#school").val() || [];
sch = sch.join(" ");
var trm = $("#term").val() || [];
trm = trm.join(" ");
var ext = $("#extension").val() || [];
ext = ext.join(" ");
我的理解是val()获取所有选择的数组,join函数返回一个字符串,用分隔符分隔值。但有些事情是不对的。 console.log表示即使在我进行连接之后,变量prog也没有值(或者它只是空白)。有什么问题?
另外,我将每个变量编码为等于.val()|| []; ...我这样做是因为这就是jquery网站上的例子如何做到的。但是这是什么意思? jquery规范说如果数组是空的,那么它会重新返回null作为默认值,什么是|| []意思是?
答案 0 :(得分:2)
|| []表示如果val返回null,则选择一个空数组作为元素。
它的含义与:
相同if ($("#term").val() == null){
trm = []
}
else{
trm = $("#term").val();
}
至于你的问题,你需要确保你的val()正确返回。尝试记录$(“#term”)。val()并查看它是否返回您期望它返回的内容。如果是的话,你知道你在其他地方做错了,虽然我没有看到任何随便的事情
答案 1 :(得分:1)
这是一种设置默认值的方法,称为short circuit evaluation:
var something = null || []; // something equals []
同样[].join(" "); // equals "" <- empty string