Javascript 阻止默认事件问题.求教

2015-01-11 18:34:51 +08:00
 lvfujun
document.getElementsByName('form')[0].onsubmit = function(){
    var input = document.getElementsByClassName('Input');
    for (var i = 0; i <= input.length; i++) {
        if(!input[i].value){
            document.getElementsByClassName('error')[i].style.visibility = "visible";
        }
    };
    return false;
}

只要在代码中加入 input[i].value 就没法阻止提交
去掉.value 像 input[i] 这样就可以阻止提交事件
求大牛分析一下......为什么获取value值会影响到return false
求解决办法!

2622 次点击
所在节点    JavaScript
9 条回复
sumhat
2015-01-11 18:57:31 +08:00
DomElement没有.value属性,你用.value 的时候应该是exception 了
iyangyuan
2015-01-11 19:25:50 +08:00
for (var i = 0; i <= input.length; i++) 这里应该是i < input.length。你写<=,input[i]肯定会undefined,然后读取.value属性异常,return false当然失效了。
lvfujun
2015-01-11 22:35:53 +08:00
@sumhat 哦哦谢谢能给个详细的代码吗?
lvfujun
2015-01-11 22:36:41 +08:00
@iyangyuan 把for去掉也不行只要出现了value就出错!
jidixuelang
2015-01-11 23:13:23 +08:00
没有任何调试信息的吧!
thinkmore
2015-01-12 09:35:30 +08:00
建议你查一下JavaScriptAPI,就大家说的value那里有点问题,我记得好像是nodeValue吧!查API吧,或者console.info(input[i].value)(火狐有效)试一试
leonlu
2015-01-12 10:10:44 +08:00
建议先学一下chrome调试相关的文章.

浏览器提供的api绝大部分情况下是不会出问题的, 绝大部分问题都是因为自己的代码写的不对.

要定位问题, 而不是乱猜问题. "咦? 好像这是里错了吧....这样写一下就应该对了吧..."是程序员最不应该犯的错误.
lvfujun
2015-01-12 22:21:32 +08:00
@leonlu 恩恩好的.
lvfujun
2015-01-12 22:22:17 +08:00
已解决感谢各位.exception之后就可以了.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/161169

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX