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

时间:2014-01-09 07:51:46

标签: javascript dojo

我正在开发一个秒表应用程序,试图学习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.

请帮忙!

2 个答案:

答案 0 :(得分:7)

嗯,那是因为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

答案 1 :(得分:1)

如果您想插入文字(不是HTML)并且不想担心小心转义<等问题字符,请考虑:

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

除IE8及以下版本外,其他任何地方都可以使用,与innerHtml不同,对于像“a”这样的有问题的文字应该是安全的

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

您可以在this page了解有关兼容性的更多信息。

  

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

该错误指的是您的代码未执行的网络通信。它可能是虚假的,这对JSFiddle特别重要,特别是考虑到听起来像广告的文本jobofferinsidebar