如果从另一个函数调用div,则重新加载div不会更新时间

时间:2017-05-04 20:33:54

标签: javascript html nwjs

我有时间功能

function hm()
{
    var d = new Date();
    var h = ('0'+d.getHours()).substr(-2);
    var m = ('0'+d.getMinutes()).substr(-2);
    var str0 =  h + ':' + m;

  return {date: str0, hour: h, minute: m};


}



var hm = hm();
var date = hm.date;
var hour = hm.hour;
var minute = hm.minute;

我有一个div

<div id="mytime">Time</div>

我从中调用时间函数来更新div

function refreshDiv() {


document.getElementById('mytimer').innerHTML =  'Time:.....' + hm.date;

}


$(document).ready(function () {
   setInterval(refreshDiv, 5000); 
});

它不会像12:03 12:04一样更新时间,但如果我将function hm()和变量var hm = hm(); var date = hm.date;放入function refreshDiv()块,则可以正常工作。

我怎样才能让它发挥作用?

编辑: 这是一个nwjs项目。

如果我在hm = hm();内添加refreshDiv(),我会:

 "Uncaught TypeError: object is not a function", source: file:///home/.../index.html (182) 

182是所包含的hm = hm();

的行号

1 个答案:

答案 0 :(得分:1)

您不需要存储单个值:

var hm = hm();
var date = hm.date;
var hour = hm.hour;
var minute = hm.minute;

你有一个函数hm():调用它,并立即获取返回对象的值:

document.getElementById('mytimer').innerHTML = 'Time: ' + hm().date;

为什么呢?让我们使用Chrome DevTools澄清一下。

enter image description here

所以,你定义了一个函数hm()。 当您调用它时,您将获得返回的对象:{a: 0000000000000, b: "test"} 您可以使用.

访问此对象的字段
var object = hm(); // Assign the returned value of hm() to object
alert(object.a);   // Alerts value of the field a of object

如果您不想分配新变量,请使用hm().a。你将节省记忆和时间。