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

3

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

这是我目前的Fiddle链接。

请帮忙!

2个回答

9

这是因为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

谢谢!问题已经解决了。但是错误仍然存在。你有什么想法吗? - Rahul Desai
那个错误与你的代码无关,实际上是JSFiddle的错误,不是你的错 ;) - g00glen00b
哦!谢谢你。不过我会在3分钟内接受你的答案! - Rahul Desai

1
如果您想插入文本(而非HTML),并且不想担心仔细转义像<这样的问题字符,请考虑:
dojo.byId("hours").textContent = "00";

This works everywhere except IE8 and below, and unlike innerHtml it should be safe for problematic text like "a

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

You can see more about compatibility at this page.

In the console, the following error is thrown:

That error refers to network communication, which your code isn't doing. It's probably spurious, something particular to JSFiddle, especially considering the text jobofferinsidebar which sounds like an ad.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接