HTMLbutton 标签和input type=button的区别
<button>标签的定义及用法
w3school的解释:
<button> 标签定义一个按钮。
在 button 元素内部,您可以放置内容,比如文本或图像。这是该元素与使用 input 元素创建的按钮之间的不同之处。
<button> 控件 与<input type=”button”> 相比,提供了更为强大的功能和更丰富的内容。<button> 与 </button> 标签之间的所有内容都是按钮的内容,其中包括任何可接受的正文内容,比如文本或多媒体内容。例如,我们可以在按钮中包括一个图像和相关的文本,用它们在按钮中创建一个吸引人的标记图像。
唯一禁止使用的元素是图像映射,因为它对鼠标和键盘敏感的动作会干扰表单按钮的行为。
请始终为按钮规定 type 属性。Internet Explorer 的默认类型是 “button”,而其他浏览器中(包括 W3C 规范)的默认值是 “submit”。
研究了一下最后一句话,尝试了三种情况:
1.在表单以外的地方使用<button>标签,表现为正常的按钮,可以用做事件触发器。
2.在表单中使用<button>标签,但未指定type属性值,会像type值为submit的input控件一样完成表单提交动作。(IE8以下浏览器不会提交,正如上文,IE默认<button>标签的类型是”button”)
3.在表单中使用<button>标签并指定属性为”button”, 即<button type=”button”> 随便写点字 </button>。表现和情况1中一样,不会提交表单。
注释:如果在 HTML 表单中使用 button 元素,不同的浏览器会提交不同的按钮值。请使用 input 元素在 HTML 表单中创建按钮。
看到这句话很奇怪,按钮的值怎么会提交呢,这和我之前的认知不一样,尝试后发现button的值确实是不会提交的,大概是我语文不好,理解有歧义。其实这句话的意思是你用操作DOM的方法去获取button元素的value值时不同的浏览器取到的情况不一样。
比如以下代码:
html代码:
<button type="button" id="btn" value="btn">按钮</button>
js代码:
var btn = document.getElementById('btn');
console.log(btn.value);
console.log(btn.getAttribute("value"));
两句console语句打印出的结果是一样的:IE8以下都打印“按钮”,其他浏览器以及更高版本的IE都打印“btn”。
另外button对应一个DOM对象名为Button;在元素上调用toString()方法会返回[object HTMLButtonElement]。
w3school上介绍Button对象时有这么一个表格。
Button 对象的属性
属性 | 描述 |
---|---|
accessKey | 设置或返回访问某个按钮的快捷键。 |
disabled | 设置或返回是否禁用按钮。 |
form | 返回对包含按钮的表单的引用。 |
id | 设置或返回按钮的 id。 |
name | 设置或返回按钮的名称。 |
tabIndex | 设置或返回按钮的 Tab 键控制次序。 |
type | 返回按钮的表单类型。 |
value | 设置或返回显示在按钮上的文本。 |
如果按照这个表格里对value的解释,那上文的console.log(btn.value); 代码应该返回文本值“按钮”才对,这个估计就是浏览器实现的问题了,标准和现实总是有差别的,记住有这么个bug就行了。
另外H5中button还有一堆新属性:
HTML 5 中的新属性:autofocus, form, formaction, formenctype, formmethod, formnovalidate 以及 formtarget。
感兴趣的可以自己了解,这不是本文的重点。
再说说<input type=”button”>
很显然,相比<button>标签<input type=”button”> 的可操作性就要低很多了。它本质上也只是input控件的其中一个类型,在元素上调用toString()方法会返回[object HTMLInputElement]。好像也没有什么特殊的地方可说的。
其实我一直在疑惑<button>标签到底该不该算作表单控件,提交功能有submit也用不着它,w3c也建议表单中实现按钮一般也使用type=”button”,好像<button>标签用在表单以外的场景才比较多,然后搜了一下,发现了一篇博客,列举了表单控件,其中也有button,传送门
总结:在表单中使用<input type=”button”> 创建按钮,如果需要样式化可以采用CSS方法实现,避免使用<button>标签时没有指定type属性误提交了表单的尴尬情况;在表单以外的地方可以使用<button>标签创建按钮,当然如果要取value值的时候要注意兼容性的问题(虽然个人觉得现在应该很少再有要兼容到IE8以下的变态要求了)。
以上内容如有错误之处欢迎指正。
HTMLbutton 标签和input type=button的区别相关推荐
- HTML button 和 input type=“button”的区别 / input type=submit 和button的区别
HTML <button> 和 input type="button"的区别: 1. <button>标签里可以放文本图片等内容,与<input> ...
- button 与 input type=button 的区别【2012/07/23】
<button>标签定义按钮.其内部可以放置内容(文本或者图像),这也是它与input创建按钮的不同之处. <button> 控件 与 <input type=" ...
- 解析button和input type=”button”的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- 解析button和input type=button 的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- botton与input type=button的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- button与input type=button 的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- input type=button与asp:button的区别,以及runat=server的作用
<input type="button">与<asp:button>的区别,以及runat="server"的作用 在<input ...
- <input type = “button“>和<button></button>的区别
<p id="demo">单击按钮创建button元素</p><button onclick="myFunction()" val ...
- input type=button和asp:Button的区别
参考 https://www.cnblogs.com/fengwei0813/p/5574385.html https://bbs.csdn.net/topics/110186772 < inp ...
最新文章
- python代码格式-Python代码格式PEP8
- colpick-jQuery颜色选择器使用说明
- failed due to the following error: 80070005 错误解决方案
- Android程序员的进阶之路
- 《看聊天记录都学不会C语言?太菜了吧》(10)程序媛聪明绝顶了
- PYTHON-进阶-编码处理小结
- 统计通话次数和时间的软件_通话时间统计app下载|通话时间统计安卓版下载 v1.0.3 - 跑跑车安卓网...
- 还在用Tensorboard?机器学习实验管理平台大盘点
- Linux学习总结(65)——Linux 服务器安全强化的七个步骤
- 电脑运行VirtualBox虚拟机总是提示0x00000000错误的解决方法
- 分享一个Bing的翻译功能
- qt:cannot open C:\Users\某某某\AppData\Local\Temp\main.obj.15576.16.jom for write
- 使用OpenBTS基站测试物联网模块安全性
- 卷积神经网络图像分类的性能评估指标有哪些
- python画地图柱状图_Python 如何画出漂亮的地图?
- SQL Server 2014 SP2
- 英语影视台词---绿皮书(2)(利普 我以为你要把那家伙打死了)
- [日记]夜色中的雪世界
- NRF52832学习笔记(31)——Watchdog看门狗使用
- [python] 向量检索库Faiss使用指北