Javascript:nCaughtTypeError:无法读取属性';拆分';空的

Javascript:nCaughtTypeError:无法读取属性';拆分';空的,javascript,Javascript,我不明白这里发生了什么?有什么建议吗?这是在这条线上发生的:- var explode = gregorianDate.split('-'); 这里是完整的功能 function updateCalendarDay(){ if (document.getElementById('gregorianDateOutput') != null) { var gregorianDate = document.getElementById('gregorianDateOutput

我不明白这里发生了什么?有什么建议吗?这是在这条线上发生的:-

var explode = gregorianDate.split('-');
这里是完整的功能

function updateCalendarDay(){ 
    if (document.getElementById('gregorianDateOutput') != null) {
       var gregorianDate = document.getElementById('gregorianDateOutput').value;
    }else{
       var gregorianDate = null;
    }
    if(gregorianDate != ""){
       var explode = gregorianDate.split('-');
       var year = explode[0];
       var month = explode[1];
       var day = explode[2];
       document.getElementById('month').value = month;
       document.getElementById('year').value = year;
       var ajax = new GLM.AJAX();
       var url='calendarAjax.php?month='+month+'&year='+year+'&day='+day;
       ajax.callPage(url, showSubscribeResult, "GET");
    }           
}

正如@Jasper所建议的,如果找不到,您可以分配空字符串:

var gregorianDate = "";
而不是

var gregorianDate = null;
编辑:

您还可以仅按值进行检查:

if( gregorianDate )

作为元素
属性始终返回的字符串,只有当值存在时,才会得到该值

您有一个字符串,该字符串有时可能为
null
。为什么不使用一个有时可以为空的字符串呢?那么你就不会有类型问题了。这行不是应该这样吗
if(document.getElementById('gregorianDateOutput').value!=null
)?我认为默认情况下输入条件是个好主意。这没有帮助<代码>空!==“是
真的
。这只是检查
gregorianDate
是否不是空字符串,以及
null
是否不是空字符串。事实上,当您与
null
进行比较时,使用松散比较还是严格比较并不重要。