使用Dojo设置元素的值/文本< span>

mrphzbgm  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(168)

为了学习Dojo Toolkit,我正在开发一个秒表应用程序,因此,首先,我需要将小时、分钟、秒和毫秒设置为0。
我试过:

dojo.byId("hours").value = "00";

还尝试:

domAttr.set("hours", 00);


在控制台中,将抛出以下错误:

GET http://jobs.jsfiddle.net/random.js?callback=Request.JSONP.request_map.request_0 500 (Internal Server Error) moo-clientcide-1.3.js?jobofferinsidebar:3146

Here is my fiddle so far.
救命啊!

ki1q1bka

ki1q1bka1#

这是因为value只在处理表单域时使用,如果要替换DOM节点的实际内容,可以使用innerHTMLtextContent。例如:

dojo.byId("hours").innerHTML = "00";
dojo.byId("hours").textContent = "00";

domAttr.set("hours", "innerHTML", "00");
domAttr.set("hours", "textContent", "00");

innerHTMLtextContent之间的区别在于后者只允许文本内容(如属性所示),而innerHTML还允许输入HTML。如果您不信任输入,则绝对应该使用textContent

请注意:您需要将00用引号括起来,否则它将被解释为一个数值,这意味着在输出它时将跳过第一个0

我还更改了您的JSFiddle

ds97pgxw

ds97pgxw2#

如果你想插入text(不是HTML),并且不想担心小心转义像<这样的问题字符,考虑一下:

dojo.byId("hours").textContent = "00";

除了IE8和更低版本之外,这在任何地方都有效,并且与innerHtml不同,它应该可以安全地处理有问题的文本,如“a

dojo.byId("hours").innerText = "00";

你可以在this page上看到更多关于兼容性的信息。
在控制台中,将引发以下错误:
这个错误涉及到网络通信,而您的代码没有这样做,它可能是虚假的,这是JSFiddle特有的,特别是考虑到文本jobofferinsidebar听起来像广告。

相关问题