submit引起的问题

今天在做一个小例子的过程中发现了一个问题:
submit按钮会清空JS写的样式?

html/css 部分:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
        body,h1{margin:0;padding:0;}
            .demo{
                width:900px;
                height:600px;
                position:relative;
            }
            a{
                text-decoration: none;
            }
            h1{
                position:absolute;
                width:400px;
                height:32px;
                font-size:28px;
                left:5px;
                top:10px;
            }
            .click{
                position:absolute;
                height:32px;
                background:red;
                color:white;
                font-weight:bold;
                border:none;
                left:330px;
                top:10px;
            }
            .demo .example{
                width:100px;
                height:100px;
                border:3px solid #000;
                position:absolute;
                left:5px;
                top:62px;
                display: none;
            }
            .demo .setting{
                width:400px;
                height:300px;
                border:10px solid grey;
                position: absolute;
                right:30px;
                bottom:30px;
                display:none;
            }
            .setting p a{
                padding:0px 10px;
                border:1px solid #808080;   
            }
            .setting .red{background: yellow;}
            .setting .yellow{background: blue;}
            .setting .blue{background: red;}

        </style>
    </head>
    <body>
        <div class="demo">
            <h1>请为下面的DIV设置样式:</h1>
            <input type="button" id="click" value="点击设置" class="click"/>
            <div id="example" class="example"></div>
            <div class="setting" id="setting">
                <p>请选择背景:
                    <a href="#" id="red" class="red"></a>
                    <a href="#" id="yellow" class="yellow"></a>
                    <a href="#" id="blue" class="blue"></a>
                </p>
                <p>请选择宽(px):
                    <a id="wid1" href="#">200</a>
                    <a id="wid2" href="#">300</a>
                    <a id="wid3" href="#">400</a>
                </p>
                <p>请选择高(px):
                    <a id="heg1" href="#">200</a>
                    <a id="heg2" href="#">300</a>
                    <a id="heg3" href="#">400</a>
                </p>
                <form>
                    <input id="Btn1" type="button" value="恢复" />
                    <input id="Btn2" type="button" value="确定" />
                </form>
            </div>
        </div>
    </body>
</html>

JS代码部分:


    window.onload = function (){
        var oBtn1 = document.getElementById('Btn1');
        var Red = document.getElementById('red');
        var Yellow = document.getElementById('yellow');
        var Blue = document.getElementById('blue');
        var oWid1 = document.getElementById('wid1');
        var oWid2= document.getElementById('wid2');
        var oWid3 = document.getElementById('wid3');
        var oHeg1 = document.getElementById('heg1');
        var oHeg2 = document.getElementById('heg2');
        var oHeg3 = document.getElementById('heg3');
        var oBtn1 = document.getElementById('Btn1');
        var oBtn2 = document.getElementById('Btn2');
        var oClick = document.getElementById('click');
        var Setting = document.getElementById('setting');


            //触摸事件
            Red.onmouseover = function (){
                red.style.background = 'red';
            };
            Yellow.onmouseover = function (){
                yellow.style.background = 'yellow';
            };
            Blue.onmouseover = function (){
                blue.style.background = 'blue';
            };
            Red.onmouseout = function (){
                red.style.background = 'yellow';
            };
            Yellow.onmouseout = function (){
                yellow.style.background = 'blue';
            };
            Blue.onmouseout = function (){
                blue.style.background = 'red';
            };


            //点击事件
            oClick.onclick = function (){
                example.style.display = 'block';
                Setting.style.display = 'block';
            };

            Red.onclick = function (){
                example.style.background = 'red';
                };
            Yellow.onclick = function (){
                example.style.background = 'yellow';
                };
            Blue.onclick = function (){
                example.style.background = 'blue';
                };
            oWid1.onclick = function (){
                example.style.width = '200px';
                };  
            oWid2.onclick = function (){
                example.style.width = '300px';
                };  
            oWid3.onclick = function (){
                example.style.width = '400px';
                };  
            oHeg1.onclick = function (){
                example.style.height = '200px';
                };
            oHeg2.onclick = function (){
                example.style.height = '300px';
                };
            oHeg3.onclick = function (){
                example.style.height = '400px';
                };
            oBtn1.onclick = function (){
                example.style.background = 'none';
                example.style.width = '100px';
                example.style.height = '100px';
                };
            oBtn2.onclick = function (){
                Setting.style.display = 'none';
            };
        };

例子效果图如下:
例子效果图

点击 上方的‘点击设置’,会弹出设置框,通过设置可以预览框点块元素样式,最后点击‘确定’按钮,设置框会隐藏,如果点击‘恢复’按钮,页面左边的DEMO块元素会回复初始状态。

那么 问题来了~~
现在例子中设置框中的‘确定’按钮,用的是button按钮,如果改成submit按钮,则会出现这样的情况:
1、注释掉 ‘确定’ 按钮的JS代码,点击后清空DEMO块的样式。
2、不注释 掉任何JS代码,选择了DEMO样式后,点击 ‘确定’ 按钮,依然清空DEMO块样式。

我的解决办法:
1、将submit改成button来实现确定提交功能;
2、两个 input标签不用form表单包,改成div包,都能解决这个问题。

从解决办法得出的个人结论:
submit和button的区别就在于一个具有提交作用,一个没有。而form表单又是联系后台服务器进行数据提交的,那么是不是可以理解成submit提交后清空了样式。

最后几句:作为一个前端刚入门的小菜菜,很多知识点都没有彻底的了解,如果以后有了更加深入的理解,再回来更新它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uncaught ReferenceError: submit is not defined是JavaScript中的一个错误,它表示在代码中使用了一个未定义的变量或函数submit。这通常是由于以下几种情况引起的: 1. 变量或函数名拼写错误:请检查代码中的submit是否正确拼写,并确保它在其他地方被正确定义。 2. 变量或函数未被正确声明或定义:如果submit是一个自定义的变量或函数,确保它在使用之前已经被正确声明或定义。如果submit是来自外部库或框架的函数或变量,确保正确引入了该库或框架。 3. 变量或函数作用域问题:如果submit是在某个特定的作用域中定义的,确保在使用之前已经进入了该作用域。 解决这个错误的方法包括: 1. 检查拼写错误:仔细检查代码中的submit是否正确拼写。 2. 确保变量或函数被正确声明或定义:如果submit是自定义的变量或函数,请确保它在使用之前已经被正确声明或定义。如果submit是来自外部库或框架的函数或变量,请确保正确引入了该库或框架。 3. 检查作用域问题:如果submit是在某个特定的作用域中定义的,请确保在使用之前已经进入了该作用域。 4. 确保引入的脚本顺序正确:根据错误信息中的提示,将jQuery的引入放在其他所有脚本的前面,以确保jQuery在使用之前已经被正确加载。 以下是一个示例代码,演示了如何正确使用submit函数: ```javascript function submitOrder() { // 执行提交订单的逻辑 } submitOrder(); // 调用submitOrder函数 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值