javascript - 来自构造函数的 HTML 元素标签名称

标签 javascript html constructor

考虑这个函数:

tagName => document.createElement(tagName).constructor

它返回具有特定标记名称的 HTML 元素的构造函数。

我想反转这个过程并获取 HTML 元素提供的构造函数的标签名称(或名称?)。我想对我正在编写的一些单元测试执行此操作,但可能还有其他用例。

一些例子:

tagNameOf(HTMLDivElement)       // should be "div"
tagNameOf(HTMLIFrameElement)    // should be "iframe"
tagNameOf(HTMLHtmlElement)      // should be "html"
tagNameOf(HTMLTableRowElement)  // should be "tr"

不幸的是,我不知道从哪里开始,除非使用静态映射。

有没有简单的方法可以实现这一点?

最佳答案

我认为一个看起来很脏的解决方案是检查构造函数的 toString():

const makeConstructor = tagName => document.createElement(tagName).constructor;
const constructorToTagName = constr => constr.toString().match(/HTML(\w+)Element/)[1].toLowerCase();
console.log(constructorToTagName(makeConstructor('div')));
console.log(constructorToTagName(makeConstructor('span')));

关于javascript - 来自构造函数的 HTML 元素标签名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51000461/

相关文章:

javascript - 当我推送 promise 数组时, promise 是否已解决?

html - 没有高度、边距、填充或边框的元素仍然占据空间,因为它下面的元素有边距

c++ - 在构造函数中,我可以获取成员的地址并相信它们将保持不变吗?

c++ - 堆数组中对象的构造函数

javascript - 音频文件到文本的转换

javascript - Summernote 文本编辑器无法在生成 html 的简单 Bootstrap 页面中工作

javascript - 滑入 div 不会重排整个页面

javascript - 数据未返回 Ajax

c++ - vector 构造函数标识为函数

javascript - 将这些时间参数转换为纪元时间