我正在开发一个秒表应用程序,试图学习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
请帮忙!
答案 0 :(得分:7)
嗯,那是因为value
仅在使用表单字段时使用。如果要替换DOM节点的实际内容,请使用innerHTML
或textContent
。例如:
dojo.byId("hours").innerHTML = "00";
dojo.byId("hours").textContent = "00";
或
domAttr.set("hours", "innerHTML", "00");
domAttr.set("hours", "textContent", "00");
innerHTML
和textContent
之间的区别在于后者只允许文本内容(如属性所示),而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
。