我正在为一个网站制作一个标准的显示器。我正在使用新的StarTrek Into Darkness stardate,因为STTNG使用的是季节数,与时间没有真正的1:1关系,而新的STID确实如此。这是我的代码。
function stardate() {
int theYear=0;
int theDay
var today = new Date();
var year = today.getFullYear();
Date.prototype.dayOfYear= function(){
var j1= new Date(this);
j1.setMonth(0, 0);
return Math.round((this-j1)/8.64e7);
return new Date().dayofYear();
}
theDay = Number(dayOfYear);
theYear = Number(year - 2015 + 2415);
return "Stardate: " + theYear.ToString + "." + theDay.ToString;
}
然后我用来显示它的HTML就在这里:
<div id="stardate" alight="right">
<script type="text/javascript">
document.getElementById("stardate").innerHTML = stardate().ToString +
'</p>';
</script>
</div>
有什么显而易见的我做得不对吗?
答案 0 :(得分:1)
你有一些类似ToString
的拼写错误。
同样toString
(小写字母t)是一种方法,因此您必须使用parens调用它:.toString()
。
如果你没有将parens添加到方法中,你将传递函数的引用而不是结果,如theDay = Number(dayOfYear);
。在这里,您必须为方法dayOfYear
添加parens:theDay = Number(today.dayOfYear());
(还添加了today.
,因为您已将方法dayOfYear
声明为Date
方法
您还使用int
关键字声明了变量,但在JavaScript中没有输入变量。您应该只使用关键字var
来实现此目的。
工作代码:
function stardate() {
var theYear = 0;
var theDay;
var today = new Date();
var year = today.getFullYear();
Date.prototype.dayOfYear = function() {
var j1 = new Date(this);
j1.setMonth(0, 0);
return Math.round((this - j1) / 8.64e7);
}
theDay = Number(today.dayOfYear());
theYear = Number(year - 2015 + 2415);
return "Stardate: " + theYear.toString() + "." + theDay.toString();
}
document.getElementById("stardate").innerHTML = '<p>' + stardate() + '</p>';
<div id="stardate" alight="right"></div>