如果值不是链接的null,我想附加值。它不允许在字符串中使用if,那么我该怎么做呢?
var age = $('#age').val();
var fn = $('#fn').val();
var ln = $('#ln').val();
var city = $('#city').val();
var country = $('#country').val();
var link = "https://mysre.com/articles/index.php?title=man-sets-biggest-pizza-record" if(age !=null){ "&age=" + age + } "&fn=" + fn + "&ln=" + ln + "&city=" + city + "&country=" + country;
答案 0 :(得分:1)
缺乏自己的领域,我想知道这可能不会做你想要的。
var myFields = {
age: $("#age").val,
fn : $("#fn").val,
ln : $("#ln").val,
city: $("#city").val(),
country: $("#country").val()
}
var link = "https://mysre.com/articles/index.php?title=man-sets-biggest-pizza-record";
$.each(myFields, function(key, value){
if(value){
link += "&"+key+"="+value;
}
}
答案 1 :(得分:1)
有很多方法可以解决这个问题。
最明显的就是逐个建立你的链接。
var a = 1;
var b = null;
var c = 5;
var str = '';
if (a) {
str += a + '&';
}
if (b) {
str += b + '&';
}
// ... and so on
我更喜欢的一个更清晰的解决方案是将所有内容放入数组或对象中,然后从中构建字符串。
var data = {
a: 1,
b: null,
c: 5
};
var str = 'http://myarray.com/?' +
Object.keys(data)
.filter(function (key) { return data[key] })
.map(function (key) { return key + '=' + data[key] }).join('&');
Object.keys(data)
将为您提供类似['a', 'b', 'c']
的数组(来自对象的键)。
filter()
将从任何返回真实值的值构建一个新数组。在这种情况下,生成的数组将['a', 'c']
('b'
被删除,因为它的值为null,这是一个假值。)
map()
将遍历其中的每一个,然后根据每个调用的返回值构建一个新数组。这看起来像这样:['a=1', 'c=5']
。
最后,join('&')
会将数组中的所有值连接成一个字符串:a=1&c=5
,我们可以将其添加到字符串的其余部分。
另一种选择是在字符串(a ? a : '')
中使用三元运算符,但这并不能很好地扩展到很多值。
答案 2 :(得分:0)
使用ternary operator,它就像(expression ? value if true : value if false)
不要忘记Javascript' truthyness让你的表情变小!
您还可以利用truthy值的技巧与var || default
执行空合并,如果var
是假的,则会使用default
(这可以链接使用如果你愿意的那些变种
答案 3 :(得分:0)
一种选择是使用三元if
。
var age = $('#age').val();
var fn = $('#fn').val();
var ln = $('#ln').val();
var city = $('#city').val();
var country = $('#country').val();
var link = "https://mysre.com/articles/index.php?title=man-sets-biggest-penis-record" + (age != undefined ? "&age=" + age : '') + (fn != undefined ? "&fn=" + fn : '') + (ln != undefined ? "&ln=" + ln : '') + (city != undefined ? "&city=" + city : '') + (country != undefined ? "&country=" + country : '');
console.log(link);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 4 :(得分:0)
我会将所有潜在值放入一个对象中,如果对象值存在且有效,则将对象串部分推送到数组中,然后将这些部分连接到一个真实的查询字符串,然后将其附加到您的网址:
var obj = {
"age": $('#age').val(),
"fn": $('#fn').val(),
"ln": $('#ln').val(),
"city": $('#city').val(),
"country": $('#country').val()
};
var arr = [];
for (var k in obj) {
if (obj[k] || obj[k] === 0)
arr.push(k + "=" + encodeURIComponent(obj[k]));
}
var url = "https://penisurl";
if (arr.length) {
url += "?" + arr.join("&");
}