当我尝试从标签获取数据时获取未定义的值

时间:2017-08-22 14:41:34

标签: javascript asp.net-mvc

我有一个标签,我试图在变量中获取数据。当我尝试使用它时,我收到错误,因为类型和值是undefined

这是我的HTML代码:

<div class="input-group date" input-type="date" id="startDate">
    @Html.EditorFor(model => model.startDate, new { htmlAttributes = new { @class = "form-control" } })


document.getElementById('description').onchange = function () {
    var startDate = document.getElementById('startDate').value;
    var endDate = document.getElementById('endDate').value;
    var startDate_ms = startDate.getTime();
    var endDate_ms = endDate.getTime();
    var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
    var diff = Math.round(Math.abs((endDate_ms - startDate_ms) / (oneDay)));
    document.getElementById('description').value = diff.value;
}

1 个答案:

答案 0 :(得分:0)

假设您的页面上有一个带有id ='description'的标签,那么您无法在标签上使用onchange事件。看看the documentation

  

当用户提交对元素值的更改时,会对input,select和textarea元素触发change事件。与输入事件不同,对于元素值的每次更改,都不一定会触发change事件。

即使您可以使用输入替换标签,您也无法使用更改事件,因为更改必须由用户而不是您的代码进行。

  

当用户提交对元素值的更改时。

所以,我建议你使用JQuery来查看trigger() 这是JSFiddle

<button>Change Label</button>
<label id="description"> some value here </label>

$("button").on('click',function(){
     $("#description").text("Value changed").trigger("lblChanged");
});
$("#description").on('lblChanged', function(){
    console.log($("#description").text());
    // Write your code here
});

如果您使用的是vanilla Javascript,请查看here