0

这是一个显示日期的简单功能(我不想要专业的,所以这就足够了)。问题是我想在页面加载时显示它。我不希望用户按下任何按钮或任何东西,但它不起作用。

这里是:

<script type="text/javascript">
    window.onload = ReturnDay;
</script>

<script>
    function ReturnDay() {
        var monthNames = [ 
            "January", 
            "February", 
            "March", 
            "April", 
            "May", 
            "June",
            "July", 
            "August", 
            "September", 
            "October", 
            "November", 
            "December" 
        ];
        var dayNames= [
            "Sunday",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
        ];
        var newDate = new Date();

        newDate.setDate(newDate.getDate() + 1);    

        $('#dateday').html(dayNames[newDate.getDay()] + " " + newDate.getDate() + ' ' + monthNames[newDate.getMonth()] + ' ' + newDate.getFullYear());​
    }
</script>

<input id="dateday" type=text></div>

有任何想法吗?

非常感谢。

4

4 回答 4

5

函数提升仅发生在给定<script>元素内。当您尝试分配ReturnDay给 时onload,它不存在。

删除示例代码的第 3 行和第 4 行:

    </script>
     <script>

也就是说,将函数直接分配给事件处理程序对象并不被认为是最佳实践。引入冲突太容易了。改用事件绑定,jQuery 将为您抽象旧 IE 中的差异。

$(window).load(ReturnDay);

或者,如果您想在 DOM 准备好时运行脚本,而不是等待页面中的所有图像加载:

$(document).ready(ReturnDay);

此外,<input>元素被定义为 EMPTY。设置它们的 innerHTML 是没有意义的。你应该使用val()not html()

于 2012-04-07T11:50:45.160 回答
3

尽管您可能对这个问题更清楚,但我认为问题在于您正在尝试设置输入字段的 html。试试这个

$('#dateday').val(...);
于 2012-04-07T11:46:56.757 回答
2

最好使用 jquery$(document).ready()而不是window.onload

于 2012-04-07T11:56:39.467 回答
1

主要问题是您应该设置输入的值,而不是 innerHTML。

document.getElementById('dateday').value = dayNames.......;

也就是说,我认为在您尝试将其分配给 onload 之前未定义您的函数。我知道函数被提升了,但我认为这只适用于当前的代码块。

无论如何,您都不需要定义命名函数。只需这样做:

window.onload = function() {
    // your date stuff here
};
于 2012-04-07T11:51:25.210 回答