bugthinker 2021-12-22 22:52 采纳率: 25%
浏览 30
已结题

js的函数 放置前后问题

1.初学js, 用Dom操作html的时候,js中的函数不生效. 两种解决方法都可以解决问题,但是不明白原因.
谢谢

2.错误代码, 函数放在最后不生效

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            height: 22px;
            width: 300px;
            background-color: #ccc;
        }
    </style>
</head>

<body>
    <button>显示系统时间</button>
    <div>时间</div>
    <script>
        var btn = document.getElementsByTagName('button')
        btn[0].onclick = function () {
            btn[0].innerText = getDate()
        }
        var div = document.getElementsByTagName('div')
        div[0].innerText = getDate()

        var getDate = function () {
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var dates = date.getDate();
            var day = date.getDay()
            var Day = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
            var hour = date.getHours()
            var minute = date.getMinutes()
            var second = date.getSeconds()
            return year + '年' + month + '月' + dates + '日' + Day[day] + hour + '时' + minute + '分' + second + '秒';
        }
    </script>
</body>

3.解决方法(一)


 var btn = document.getElementsByTagName('button');
        btn[0].onclick = function () {
            btn[0].innerText = getDate()
        }
        var getDate = function () {
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var dates = date.getDate();
            var day = date.getDay()
            var Day = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
            var hour = date.getHours()
            var minute = date.getMinutes()
            var second = date.getSeconds()
            return year + '年' + month + '月' + dates + '日' + Day[day] + hour + '时' + minute + '分' + second + '秒';
        }
        var div = document.getElementsByTagName('div');
        div[0].innerText = getDate();

解决方法(二)


   var btn = document.getElementsByTagName('button');
        btn[0].onclick = function () {
            btn[0].innerText = getDate()
        }
        var div = document.getElementsByTagName('div');
        div[0].innerText = getDate();
        
        var getDate = function () {
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var dates = date.getDate();
            var day = date.getDay()
            var Day = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
            var hour = date.getHours()
            var minute = date.getMinutes()
            var second = date.getSeconds()
            return year + '年' + month + '月' + dates + '日' + Day[day] + hour + '时' + minute + '分' + second + '秒';
        }
  • 写回答

1条回答 默认 最新

  • 虎子8 2021-12-22 23:16
    关注

    函数正常写法都是先定义后使用,正确写法写到最上面

    如果不写到上面可以改为function getDate () {}

    var getDate = function () 这句代码相当于
    1,在script第一句 var getDate
    2,在原位置 getDate = function ()

    而你的代码都 在1 和2 的中间 所以会报错 getDate is not a function

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 创建了问题 12月22日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?