在Dojo ContentPane中加载javascript

时间:2010-03-04 06:39:06

标签: javascript dojo

我再次陷入困境。我正在尝试将一些javascript(数字微调器)加载到Dojo内容窗格中。我得到一个很好的ugley消息:

Message: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)

这是我的代码。有什么想法吗?

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js" djConfig="isDebug: false, parseOnLoad: true"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tundra/tundra.css" /> 
<link rel="stylesheet" href="numberspinner.css" type="text/css" media="screen" />
<script type="text/javascript" src="numberspinner.js"></script>

<script type="text/javascript">
var init = function()
{ dojo.require('dijit.layout.ContentPane');
}
dojo.addOnLoad(init);
</script>

</head>

<body class="tundra">


<div id="notworkingtab" dojoType="dijit.layout.ContentPane" title="Location">

<script type="text/javascript">
var abc= new SpinControl();
abc.SetMaxValue(5);
abc.SetMinValue(0);
abc.SetCurrentValue(0);
abc.SetIncrement(0.5);
document.body.appendChild(abc.GetContainer());
abc.StartListening();
</script>

</div></div>

</body>
</html>

如果有人关心,我从这里得到了我的号码: http://www.switchonthecode.com/tutorials/javascript-controls-the-spin-control

它显示了数字微调器,但没有显示内容窗格,我得到上面的错误...如果我取出数字微调器,内容窗格工作正常。或者,如果我取出contentpane,数字微调器就可以了。

由于 gggggggg

3 个答案:

答案 0 :(得分:4)

我认为dojox.layout.ContentPane小部件就是您要找的。

dojox.layout.ContentPanedijit.layout.ContentPane的扩展,提供脚本执行等功能。

答案 1 :(得分:2)

我想我给你的评论/答案是你试图做这个“非”道场喜欢。基本上通过做你正在做的事情,你最终会得到一个非常类似dojo的应用程序。

如果本机dijit或dojox控件不提供您想要的功能,那么最好将自己的数字微调器包装为dijit Widget。你可以获得很多优势,例如dijit.layout.ContentPane“拥有”子控件并自动管理它等等。起初我认为创建自定义小部件会让人望而生畏,但最后,它并不难所有

此外,dijit.layout.ContentPane通常不允许在加载时运行JavaScript,因为解析器会忽略它。您可以使用dojox.layout.ContentPane来提供此功能,但随着时间的推移,我了解到通常我想要做的事情可以通过<script type="dojo/method"><script type="dojo/connect">完成。

就我个人而言,我认为你对长期的结果会更加满意。

答案 2 :(得分:0)

对于任何有兴趣的人我都明白了。金发时刻。

的document.getElementById( “myDiv”)的appendChild(starrating.GetContainer());