javascript - Dojo 获取元素类型

标签 javascript html dojo

我想使用 javascript 来获取 dijit 元素类型。例如如果该项目是文本框、组合框、过滤选择等。这是我尝试过的方法,结果返回了 undefined。

HTML

<s:textfield type="text" id="name" required="true" data-dojo-type="dijit/form/ValidationTextBox" />

<s:select id="gender" data-dojo-type="dijit/form/FilteringSelect" /> 

Javascript

var genderType = dijit.byId('gender').attr('data-dojo-type');

var name= dijit.byId('name').attr('data-dojo-type');

console.log(genderType);
console.log(name);

结果

undefined
undefined

最佳答案

获取它们的最佳方法确实是使用 declaredClass 属性,但是,我不确定依赖它是否是一件好事,因为它大多没有文档记录。

在你的情况下,它是:

require([ "dojo/ready", "dijit/registry" ], function(ready, registry) {
    ready(function() {
        console.log(registry.byId("gender").get("declaredClass")); // Returns dijit.form.FilteringSelect
    });
});

示例:http://jsfiddle.net/6RRUK/

使用data-dojo-type将不起作用,因为:

  1. 它不是一个小部件属性,如果您想实现此目的,您应该请求 DOM 属性本身。
  2. 当 Dojo 解析器解析标记时,data-dojo-type 属性通常会消失。

关于javascript - Dojo 获取元素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23740437/

相关文章:

C# - 如何仅下载 HTML 的修改部分

javascript - 如何测试 MutationObserver

javascript - 如何解决 JS 正则表达式在按键期间不起作用的问题

html - 为什么我的 html 文件在上传时不再使用我的 css 文件?

google-chrome - 谷歌浏览器网页刷新中断

javascript - 有没有改进 javascript (Dojo) 加载的方法?

javascript - DOJO:延迟加载 LazyTreeGrid 中的节点 - 寻找示例代码

单击鼠标时,Javascript获取网页上最近的超链接

javascript - 使用 .NET/C# 与使用 HTML/JavaScript 构建 Android 应用程序

javascript - Angular 模板可以调用返回 promise 的函数吗