众所周知,在dojo里存在dom和widget两个类型,dom指的是普通类型的HTML元素,包括各种类型的标签、按钮、输入框等等,而widget指的是dojo自身所带的模板,同时也包括按钮、输入框等等。那么在新建两个不同的按钮时,它们会不会存在什么差异呢?实验结果如下:

(1)先在html中新建两个不同类型的button按钮

<html>
<head>
<meta charset="UTF-8">
<title>parser</title>
<link rel="stylesheet" href="../../dojosrc/dijit/themes/claro/claro.css"/>
<script type="text/javascript" src="../../dojosrc/dojo/dojo.js" data-dojo-config="async: true"></script>
<script type="text/javascript" src="parser.js"></script>
</head>
<body>
<div id="oralButton">
<button id="button1" type="button" >OK</button>
</div> <div id="widgetButton">
<button id="button2" data-dojo-type="dijit/form/Button" >You Are Master……</button>
</div>
</body>
</html>

(2)在JS文件中分别对按钮添加click时间,使其在点击后按钮内文字变化。在这里可以看出,两个类型button的click事件处理方法不一致,这是因为对于普通button来说,要先进行new Button()才可以进行dojo的后续操作,而dijit/form/Button则不需要,如果再进行new Button()的话会报“Tried to register widget with id==button2 but that id is already registered”的错误,因为其已经是被register声明了。

require(['dojo/dom',
'dojo/on',
'dojo/dom-attr',
'dijit/registry',
'dojo/parser',
'dijit/form/Button',
'dojo/domReady!']
,function(dom, on, domAttr, registry, parser, Button){
var node =dom.byId('button1');
// 获取button1的innerHTML值
var Value = domAttr.get(node, 'innerHTML');
console.log(Value);
// 将button1的value值赋给label,以供后续更换处理
var button = new Button({
label: Value
},'button1');
// 设置button1的变换值
var buttonClick = function(){
button.set('label', 'I Am hero!');
}; // button的点击事件,也可以用on(dom.byId('button'), 'click', function(){})
//button.on('click', buttonClick);
on(button, 'click', buttonClick ); // 剖析器解析data-dojo-type类型的widget组件
parser.parse(); var Node = registry.byId('button2');
// 获取button2 的label值
var button2Value = domAttr.get(Node, 'label');
console.log(button2Value);
// 将button2的value值赋给label。以供后续更换处理
var clickChange = function(){
domAttr.set(Node, 'label', 'No! I am a hreo!');
}
on(Node, 'click', clickChange);
})
												

dojo下的dom按钮与dijit/form/Button的更多相关文章

  1. dijit.form.Select 基本用法

    dijit.form.Select 1)创建: var division = new dijit.form.Select({ id: "Division",//id必须唯一 nam ...

  2. dijit样式定制(二)dijit.form.Select与dijit.form.NumberSpinner

    dijit.form.Select: Select的样式位于Claro/form/Select.less中,Select主要通过table来布局,下图可以看到Select的布局结构 介绍几个主要的cl ...

  3. 使用selenium webdriver+beautifulsoup+跳转frame,实现模拟点击网页下一页按钮,抓取网页数据

    记录一次快速实现的python爬虫,想要抓取中财网数据引擎的新三板板块下面所有股票的公司档案,网址为http://data.cfi.cn/data_ndkA0A1934A1935A1986A1995. ...

  4. BootStrap学习(2)_下拉菜单&按钮组

    一.下拉菜单 1.基本下拉菜单 如需使用下列菜单,只需要在class .dropdown 内加上下拉菜单即可.下面的实例演示了基本的下拉菜单: <!DOCTYPE html> <ht ...

  5. 去掉video视频播放器下的下载按钮

    去掉video视频播放器下的下载按钮: video::-internal-media-controls-download-button { display:none; } video::-webkit ...

  6. 【原创】smarty引擎下的导航按钮高亮实现

    <?php$_nvaarr = array( array('name'=>'首页','url'=>'company.php?id='), array('name'=>'公司介绍 ...

  7. 自定义 Swiper 的上一页,下一页按钮

    1. Swiper 的上一页,下一页按钮,不是必需包含在container 中的 2. 定义上一页,下一页按钮的样式,CSS略.... 3. 在初始化Swiper中,定义上一页,下一页按钮

  8. 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton

    [源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...

  9. 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton

    介绍背水一战 Windows 10 之 控件(按钮类) ButtonBase Button HyperlinkButton RepeatButton ToggleButton AppBarButton ...

随机推荐

  1. node中的事件发射器

    在事件环中node通过on和emit进行事件的接收和发射,笔者以简单的窗口聊天小demo来演示一下如何通过事件环来发射和监听事件并执行回掉: var events=require('events') ...

  2. windows下配置下burpsuite的小方法。

    1.下载破解版burpsuite和正版burpsuite. 2.安装正版burpsuite(免费版) 3.打开安装路径 4.把破解版的burp拷贝到安装路径下 5.该路径下应该有个burpsuite_ ...

  3. Ubuntu 16.04 LTS 安装 miniconda

    Ubuntu 16.04 LTS 安装 miniconda 下载 miniocnda 的 bash 文件下载链接 https://conda.io/miniconda.html ,我选择的是 64-b ...

  4. python中的time模块和datetime模块

    >>> import time>>> time.time()1511330865.656656>>> time.localtime(time.ti ...

  5. SoapUI接口测试-验签值处理-调用java的加密jar包

    转载自:https://www.jianshu.com/p/7c672426a165 一. 背景: 调用接口时有个请求参数是对请求入参按一定规则进行加密生成的验签值,每次不同参数的请求生成唯一的验签值 ...

  6. 关于FIFO异步复位的问题

    关于FIFO异步复位的问题 FIFO异步复位的宽度,需要保证至少3个较慢时钟的时钟周期长度. 怎样对一个脉冲加宽呢? `timescale 1ns / 1ps //////////////////// ...

  7. DApp demo之pet-shop

    注意: 这里使用的truffle版本为4.1.4,貌似使用高版本在truffle test时候会出问题,提示 truffle/Assert.sol is not found等错误 使用Truffle ...

  8. ubuntu16.04上vue环境搭建

    $ sudo apt-get install python-software-properties $ curl -sL https://deb.nodesource.com/setup_8.x | ...

  9. python之路——24

    复习 1.面向对象编程 思想:角色的抽象,创建类,实例化,操作实例2.面向对象的关键字 1.类的静态属性,存储在类的命名空间 2.类名.方法(对象),对象.方法 3.对象可以使用静态变量:类不可以使用 ...

  10. Centos 7 虚拟机挂载U盘

    本文记录环境为在Windows 7环境下,通过VMware安装Centos 7.2.挂载U盘过程如下,供日后查看,也供各位读者遇到类似问题时参考. 挂载过程及问题排除如下: 1.因为是虚拟机,所以先到 ...