我需要创建一个由<input type="text" ...
表单控件的属性值组成的查询字符串。有些属性可能不存在,因此我正在测试"undefined"
但未获得预期结果。
var ctl = $('#somecontrol');
var url = "/someuri/" +
"?pid=" + ctl.attr('id') +
"&m=" + (typeof ctl.attr('mid') === "undefined") ? "" : ctl.attr('mid') +
"&u=" + (typeof ctl.attr('uid') === "undefined") ? "" : ctl.attr('uid') +
"&dvalue=" + (typeof ctl.attr('value') === "undefined") ? "" : ctl.attr('value') +
"&dchoice=" + (typeof ctl.val() === "undefined") ? "" : ctl.val();
某些属性有时可能未定义,而在其他属性中定义。如果我删除三元逻辑并且只包含ctl.attr('...') +
url变量就可以了,除了它将包含undefined
未定义的属性。
包含三元逻辑总是将url保留为空字符串(""
)。
var url =
行我做错了什么?
答案 0 :(得分:1)
重要的是:
(typeof ctl.attr('mid') === "undefined") ? "" : ctl.attr('measureid')
和其他类似的代码块应该包含其他()
其他事项:
typeof ctl.attr('mid') === "undefined"
可以只是ctl.attr('mid') === undefined
<强>更新即可。
通过使用其他function
:
var ctl = $('#somecontrol');
var url = "/someuri/" +
"?pid=" + ctl.attr('id') +
"&m=" + formValue(ctl.attr('mid')) +
"&u=" + formValue(ctl.attr('uid')) +
"&dvalue=" + formValue(ctl.attr('value')) +
"&dchoice=" + formValue(ctl.val());
alert(url);
function formValue(testValue)
{
return (testValue === undefined ? "" : testValue);
}