HTML中id或name与function方法名相同的问题
2014-03-28 16:33
281 查看
废话不说,直接上demo
首先小编模拟了这些元素在form中的情况,这种情况在项目中经常遇到的。
结果如下图,除了div和a会正常显示,其他的都会报错“TypeError: test is not a function”
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/d667159a1bce72fc7ba4bb8d758c5655)
如果将form标签去掉,所有标签都放出来呢?
结果如下图,除了img报错,其他的都会正常显示
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/aba05fc287169a9bd2464be64d2f268e)
总结一下:imge在任何情况下id或name都不能和方法名相同
input在form下会报错,在去除form后恢复正常
div a中id或name和方法名和可以相同
尽管这样,但还是强烈反对在开发中id或name的命名和function方法名相同!!!
解决方法:只要稍加注意,在命名时保证id或name和function方法名不一致即可。
小编一直想,同样都是DOM对象,为什么会有如此大的差别?造成这种现象的原因是什么?无奈小编技术水平有限,暂且搁置这个不是问题的问题。
首先小编模拟了这些元素在form中的情况,这种情况在项目中经常遇到的。
<form> <input type="button" id="test1" onclick="test1();" value="测试1"/> <input type="button" name="test2" onclick="test2();" value="测试2"/> <input type="button" id="test3" onclick="test4();" value="测试3"/> <input type="button" name="test4" onclick="test3();" value="测试4"/> <img src="" name="test5" onclick="test5();" alt="测试5"> <div id="test6" onclick="test6();">测试6</div> <a href="#" name="test7" onclick="test7();">测试7</a> </form> <script type="text/javascript"> function test1(){ alert("测试1"); } function test2(){ alert("测试2"); } function test3(){ alert("测试4"); } function test4(){ alert("测试3"); } function test5(){ alert("测试5"); } function test6(){ alert("测试6"); } function test7(){ alert("测试7"); } </script>
结果如下图,除了div和a会正常显示,其他的都会报错“TypeError: test is not a function”
如果将form标签去掉,所有标签都放出来呢?
<input type="button" id="test1" onclick="test1();" value="测试1"/> <input type="button" name="test2" onclick="test2();" value="测试2"/> <input type="button" id="test3" onclick="test4();" value="测试3"/> <input type="button" name="test4" onclick="test3();" value="测试4"/> <img src="" name="test5" onclick="test5();" alt="测试5"> <div id="test6" onclick="test6();">测试6</div> <a href="#" name="test7" onclick="test7();">测试7</a> <script type="text/javascript"> function test1(){ alert("测试1"); } function test2(){ alert("测试2"); } function test3(){ alert("测试4"); } function test4(){ alert("测试3"); } function test5(){ alert("测试5"); } function test6(){ alert("测试6"); } function test7(){ alert("测试7"); } </script>
结果如下图,除了img报错,其他的都会正常显示
总结一下:imge在任何情况下id或name都不能和方法名相同
input在form下会报错,在去除form后恢复正常
div a中id或name和方法名和可以相同
尽管这样,但还是强烈反对在开发中id或name的命名和function方法名相同!!!
解决方法:只要稍加注意,在命名时保证id或name和function方法名不一致即可。
小编一直想,同样都是DOM对象,为什么会有如此大的差别?造成这种现象的原因是什么?无奈小编技术水平有限,暂且搁置这个不是问题的问题。
相关文章推荐
- html页面中,ID不要有多个,不然jquery会出现莫名其妙的问题。ID相同的有多个,jquery的根据ID取值,会有意想不到的错误、莫名其妙的错误
- 解决spring中不同配置文件中存在name或者id相同的bean可能引起的问题
- struts1.x tag 引起的 form 只生成id属性, 不生成name属性的问题及解决方法
- 关于在用curl函数post网页数据时,遇上表单提交 type为submit 类型而且没有name和id时可能遇到的问题及其解决方法
- 解决spring中不同配置文件中存在name或者id相同的bean可能引起的问题
- 一个页面中有相同ID元素 和 一个页面中一个元素的name值 和另外一个元素的ID值相同--在低版本IE下的问题。
- 解决spring中不同配置文件中存在name或者id相同的bean可能引起的问题
- 使用Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { id = "formInfo" })提交数据的问题
- IE浏览器---JS中变量名跟HTML标签的ID相同的问题
- form或input 的id和js方法名相同问题,找不到该方法。
- 关于html+ashx开发中几个问题的解决方法
- 黄聪:wordpress向mysql字段中保存html代码(使用add_option()方法),然后无法显示出问题
- 最近的两个问题<input>与<frame src="/example/html/frame_a.html" name="showframe">
- 安卓获取渠道名渠道id Android获取设备唯一标识的终极解决方法,防止安卓7.0时崩溃问题
- C#项目引用完全相同dll文件的问题解决方法(反射)
- Mysql获取id最大值、表的记录总数等相关问题的方法汇总
- 水滴石穿之getElementsByName()、IFRAME背景开关、HTML控件获取焦点问题
- 关于html中charset与<title>位置不同页面空白的问题及解决方法
- HTML中Id和Name的区别
- html中id和name属性的区别(转)