使用相同的类更改div标签中的时间值(javascript / jQuery)

时间:2015-05-11 11:16:55

标签: javascript jquery asp.net-mvc

我在MVC 5项目中有一个索引视图。此视图使用局部视图,部分视图包含在索引中,如下所示:

handle_sig () {
  case "$1" in
    HUP)
      echo "CATCH: SIGHUP"
      ;;
    INT)
      echo "CATCH: SIGINIT"
      ;;
    *)
      echo "CATCH: SIG$1"
      ;;
  esac
}

_trap () {
  for sig in "$@"
  do
    trap "handle_sig $sig" "$sig"
  done
}

_trap INT HUP USR1

之后,将使用部分视图_ls中的代码填充索引。 我想用class =“mtime”更改div的内部HTML。此div具有时间值,格式为HH:MM(UTC)。我想让它显示用户的当地时间。所以,我在部分的body标签结尾之前添加了这个javascript代码(我最初的索引中的nOT)

<div id="le">
    @Html.Action("_ls", "Home")
</div>

但div中的值永远不会改变

2 个答案:

答案 0 :(得分:1)

您可以使用日期的构造函数和UTC后缀:

来执行此操作
$('.mtime').each(function() {
    var time = $(this).text();

    var date = new Date();

    date = new Date(date.toDateString() + ' ' + time + ' UTC');
    $(this).text(date.getHours() + ':' + date.getMinutes());
});

jsFiddle

答案 1 :(得分:0)

首先是代码中的错误,innerHTML InnerHTML

第二个问题是,您尝试从对象innerHTML解析JavaScript日期,该对象不会成为Date对象。

其次,您需要使用setInterval告诉您的代码在设定的时间间隔内运行,我们可以将您的代码包装在function中,然后每隔n秒调用一次(我用过1):

<script type="text/javascript">

        //First, let's call it for page load
        calculateTimes();

       //Now, let's call it every 1 second:
       setInterval(calculateTimes, 1000);

        function calculateTimes() {
            $('.mtime').each(function (obj) {
                var date = obj.innerHTML != ""
                    ? new Date(obj.innerHTML)
                    : new Date();
                var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);

                var offset = date.getTimezoneOffset() / 60;
                var hours = date.getHours();

                newDate.setHours(hours - offset);
                obj.innerHTML = newDate;
            });
        }


    </script>