dojo下的dom按钮与dijit/form/Button
众所周知,在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的更多相关文章
- dijit.form.Select 基本用法
dijit.form.Select 1)创建: var division = new dijit.form.Select({ id: "Division",//id必须唯一 nam ...
- dijit样式定制(二)dijit.form.Select与dijit.form.NumberSpinner
dijit.form.Select: Select的样式位于Claro/form/Select.less中,Select主要通过table来布局,下图可以看到Select的布局结构 介绍几个主要的cl ...
- 使用selenium webdriver+beautifulsoup+跳转frame,实现模拟点击网页下一页按钮,抓取网页数据
记录一次快速实现的python爬虫,想要抓取中财网数据引擎的新三板板块下面所有股票的公司档案,网址为http://data.cfi.cn/data_ndkA0A1934A1935A1986A1995. ...
- BootStrap学习(2)_下拉菜单&按钮组
一.下拉菜单 1.基本下拉菜单 如需使用下列菜单,只需要在class .dropdown 内加上下拉菜单即可.下面的实例演示了基本的下拉菜单: <!DOCTYPE html> <ht ...
- 去掉video视频播放器下的下载按钮
去掉video视频播放器下的下载按钮: video::-internal-media-controls-download-button { display:none; } video::-webkit ...
- 【原创】smarty引擎下的导航按钮高亮实现
<?php$_nvaarr = array( array('name'=>'首页','url'=>'company.php?id='), array('name'=>'公司介绍 ...
- 自定义 Swiper 的上一页,下一页按钮
1. Swiper 的上一页,下一页按钮,不是必需包含在container 中的 2. 定义上一页,下一页按钮的样式,CSS略.... 3. 在初始化Swiper中,定义上一页,下一页按钮
- 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton
[源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...
- 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton
介绍背水一战 Windows 10 之 控件(按钮类) ButtonBase Button HyperlinkButton RepeatButton ToggleButton AppBarButton ...
随机推荐
- SpringMVC中post请求参数注解@requestBody使用问题
一.httpClient发送Post 原文https://www.cnblogs.com/Vdiao/p/5339487.html public static String httpPostWithJ ...
- 经典问题----最短路径(Floyd弗洛伊德算法)(HDU2066)
问题简介: 给定T条路,S个起点,D个终点,求最短的起点到终点的距离. 思路简介: 弗洛伊德算法即先以a作为中转点,再以a.b作为中转点,直到所有的点都做过中转点,求得所有点到其他点的最短路径,Flo ...
- 電腦清理緩存bat文件源碼
@echo off echo 正在清除系統垃圾文件,請稍等 ...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._ ...
- 记SCOI2019
离精英体验营结束已两周的,要哭的要笑的现在也一定释怀了.是时候冷静分析一下这次的考试了.时间序虽然有流水账的嫌疑,但这毕竟是OI界的流行风气. day0 早上坐学校包的商务车去了电子科技大学.走在来过 ...
- zabbix 监控进程
参考资料 官方文档. 有时候某个进程挂了没有发现,直到业务中断才想起去检查.希望能有个功能在某个进程挂了以后发出告警. zabbix提供proc.num这个key对后台进程进行监控.原理很简单,其实就 ...
- MessageFormat.format 包含单引号引起的不可替换
MessageFormat.format("region = '{0}'", "en");实际结果是region = {0}如果需要被替换的话,需要用双单引号 ...
- django ORM多对多操作
创建多对多: 方式一:自定义关系表 class Host(models.Model): nid = models.AutoField(primary_key=True) hostname = mode ...
- 一些关于three.js的摘抄笔记
加载多个geometry的方式: (可以利用three.js自带convert_obj_three.py文件将obj文件转换成json文件) function loadModel() { loader ...
- JavaScript中数组的应用
Array的应用 1)创建 new Array();new Array(size);new Array(element,element,...,element); 2).Array对象属性 const ...
- pecl 更换对应php版本
转自 https://www.jianshu.com/p/fee58d93e8b1 版本问题 如果我们是通过apt-get或者yum安装的php,现在一般默认的都是php7.0版本. pecl安装过 ...