
[英]What is the way to creating and using custom Attribute for already existing tags in html
[英]What are the consequences of creating a custom own property (not a custom attribute) on an HTML element?
在回答另一个SO问题时,我为能想到一个非常短的单击处理程序切换感到非常自豪。 稍微重写一下,是这样的:
document.getElementById("myToggle").addEventListener("click", function() {
(this.oddClk = !this.oddClk) ? oddHandler() : evenHandler();
});
这不是我的问题的中心,但是如果您想知道我在做什么,请阅读本段。 我oddClk
单击的HTML元素添加一个自定义属性oddClk
。 第一次单击后,此属性最初undefined
但随后立即取为true
。 (请注意,三元语句的第一部分有意使用=
not ==
或===
。)第二遍将其再次取反为false
,依此类推。根据其值,调用两个处理程序中的一个。 该代码不仅简短,而且不需要任何全局变量,并且可以同时在多个目标上使用。 如果您有兴趣,可以使用以下版本:
document.getElementById("myToggle").addEventListener("click", function() { (this.oddClk = !this.oddClk) ? oddHandler(): evenHandler(); }); function oddHandler() { document.getElementById("result").innerHTML = "odd"; } function evenHandler() { document.getElementById("result").innerHTML = "even"; }
<div id="result">Not clicked yet</div> <button id="myToggle">Click me to toggle</button>
我的问题,虽然是这样的:什么是使用的后果this.myCustomProperty
哪里this
是一个HTML元素(在这种情况下,这是点击的目标)?
请注意,我没有在元素上设置自定义属性 。 相反,我在HTML元素上设置了一个新的自定义属性 。 实际上,它最终是元素上唯一的属性。 像这样将自己的属性分配给HTML元素对象是否有任何明显的副作用,这些副作用可能在其他地方产生负面影响?
我在自定义属性上还发现了其他问题,但这显然是另一回事。 在addEventListener
讨论中this
引用似乎并没有带来新的属性。
可能的不利方面是,我可能会选择将在将来的HTML版本中定义的属性名称。 在这种情况下,我自己的财产将破坏较新的继承财产。 但是,如果我仔细或奇怪地命名我的财产,那方面我应该会好的。 那么,还有其他问题吗?
请注意,我并不是真正要问是否应该在生产代码中包含此代码。 我基本上在上面写了我的切换例程,就像做一次心理锻炼一样,目的是要知道我能写多长时间。 我要求更多的只是为了更好地了解HTML的内部工作原理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.