小编Cua*_*moc的帖子

为什么这个函数返回NaN?

起初这可能看起来像许多其他已经在JavaScript中提到的关于NaN的问题,但我向你保证不是.

我有这段代码转换从文本框中获取值,并在单击表单中的按钮后将其转换为日期:

var dateString = $('#itemAcquiredTxt').val(); //Would have a value of '2013-12-15'
var dateAcquired = new Date(dateString); //Invalid Date ?
Run Code Online (Sandbox Code Playgroud)

文本框itemAcquiredTxt将具有从数据库调用中获取的值"2013-12-15"(YYYY-MM-DD格式):

$('#itemAcquiredTxt').val(new Date(item.DateAcquired).toLocaleDateString());
Run Code Online (Sandbox Code Playgroud)

创建新的Date对象后,它会给我"无效日期".

好的...所以我想通过将年,月和日作为数字 - 其他构造函数之一传递来创建Date对象.

 var year = Number(dateString.split("-")[0]); //Returns NaN
 var month = Number(dateString.split("-")[1]); //Returns NaN
 var day = Number(dateString.split("-")[2]); //Returns NaN
 var dateAcquired = new Date(year, month - 1, day); //InvalidDate
Run Code Online (Sandbox Code Playgroud)

我尝试用破折号分割日期文本框中的字符串,并使用Number和parseInt将字符串转换为数字 - 但两者都给了我一个NaN.我仔细检查了字符串值,似乎没有错:分别在分割项目上"2013"​​,"12","15".

我对自己说......也许我的代码是坏的,试了一下的jsfiddle https://jsfiddle.net/jrxg40js/
但正如你可以看到有放置一个日期文本,按下按钮后,它的工作原理!

下面是相关的HTML代码

<table id="inputTable">
            <tr>
                <td><span><strong>Name:</strong></span></td>
                <td><input id="itemNameTxt" type="text" value="" /></td>
            </tr>
            <tr>
                <td><span><strong>Category:</strong></span></td>
                <td>
                    <select id="categorySelect" ng-model="selectedCategory" ng-change="changeSubCategoryList(selectedCategory)" ng-options="cat …
Run Code Online (Sandbox Code Playgroud)

javascript jquery date nan visual-studio

7
推荐指数
1
解决办法
655
查看次数

标签 统计

date ×1

javascript ×1

jquery ×1

nan ×1

visual-studio ×1