javascript - JS我这段代码没有问题呀为什么一运行就提示 我的sume()函数没有定义呀
黄舟
黄舟 2017-04-10 15:36:40
[JavaScript讨论组]

如题;只要点击那个按钮就报错。说是seme没有定义之类的。。。请大神帮解答解答;我错在哪里。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
      <script type="text/javascript">
        window.onload = function sume(){
            var i=10;
            var j=10;
            var m=j+i;
            document.getElementById("pci1").innerHTML=m;
        };
        </script>       
    </head>
    <body>
      <p id="pci1">世界,你好</p>
      <p>i=10;j=10;m=?</p>
      <input type="button" value="结果" onclick="sume()" />

    </body>
</html>

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(5)
PHP中文网

因为没有声明这个函数或者说变量,它只是赋值给了window.onload,并没有声明,所以其他地方不能调用没有声明过得函数,从底层上看这个线程的栈中没有这个变量的引用,正确的方法应该是function sume(),再赋值给window.onload。

ringa_lee

window.onload = function sume(){外面是访问不到sume的,去掉window.onload,或者在onload函数内使用element.onclick=function(){}

怪我咯
<script type="text/javascript">
        function sume(){
            var i=10;
            var j=10;
            var m=j+i;
            document.getElementById("pci1").innerHTML=m;
        };
        </script>
PHP中文网

如 @苏生不惑 所讲 命名函数表达式的名称标识符只在其定义的函数范围内有效,并且这个标识符不能被重新复制。
你的代码稍微修改下就可以达到你的初衷了

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
      <script type="text/javascript">
          function sume(){
            var i=10;
            var j=10;
            var m=j+i;
            document.getElementById("pci1").innerHTML=m;
         }
        window.onload = sume;
        </script>       
    </head>
    <body>
      <p id="pci1">世界,你好</p>
      <p>i=10;j=10;m=?</p>
      <input type="button" value="结果" onclick="sume()" />

    </body>
</html>
高洛峰

因为你确实没有声明sume这个函数,你把它作为函数表达式赋给了window.onload,你需要单独的声明一次才不会报错

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号