如果条件在javascript中字符串为空时仍然传递

时间:2014-07-07 15:28:09

标签: javascript jquery

我想知道我在这里失踪了什么,它必须显而易见。

如果还有坐标,我想要的就是不出现的标记。

    var lat = jQuery('#latitude').val();
    var lng = jQuery('#longitude').val();

    alert(lat);
    alert(lng);

    if (lat.length != 0) {
     alert('shouldnt be happening');
     var latlng = new google.maps.LatLng(
      parseFloat(lat),
      parseFloat(lng)
     );
    var marker = new google.maps.Marker({
     map: map,
     position: latlng 
   });   

  }

输入字段是否为空,if条件不断传递。

我也试过if (lat != '') {}

我已设置警报以向自己证明它们是空的,并且正如预测的那样,它们会在空白时弹出一个空白弹出框。

谢谢。

编辑:

为了简化它我输入了这段代码,现在奇怪的是所有3个警报都在发生。

var lat = jQuery.trim(jQuery('#latitude').val());
var lng = jQuery.trim(jQuery('#longitude').val());
var zoom = 7;
alert(lat);
alert(lng);

if (lat.length == 0) {
    lat = 53.412;
    zoom = 6;
    alert('THERE IS NO LATITUDE SET');
}

if (lng.length == 0) {
    lng = -8.243;
    zoom = 6;
    alert('THERE IS NO LONGITUDE SET');
}

 if (lat.length != 0) {
    alert('now this shouldnt be happening');
 }

2 个答案:

答案 0 :(得分:0)

我建议使用更具保护性的代码:

var lat = jQuery('#latitude').val() || "";
var lng = jQuery('#longitude').val() || "";

然后:

if (lat.length != "") {
   ...
}
在很多情况下,

val()可以返回null,使用|| "";可以确保在var初始化时有一个预期类型的​​定义值。

另外,我认为将val()替换为:

会更好
attr("value") 

答案 1 :(得分:0)

这些是Javascript速记编码技术。

当你得到一个变量时,

var lat = jQuery('#latitude').val();
var lng = jQuery('#longitude').val();

当您需要检查其长度时,您需要首先检查这些条件,

  

null,undefined和empty

所以你可以查一下,

if( lat !== null && lat !== undefined && lat !== "" && lat.length !== 0 ) {
    //do something
}

检查相等性时,使用“严格平等”是一种很好的做法。

检查上述条件的速记方法是,

if( lat || "" ){ 
    //Do Something
}

我有一些你可以参考的JavaScript速记技术。 Link