Javascript Dojo js工具包:动态填充选择的问题
我对dijit.form.Select项有一些问题 在一个页面中,我有两个项目:一个是在加载html页面时填充的,另一个是根据用户在第一个页面上选择的选项填充的 下面是我现在所说的示例,我保持代码的简单性,但在实际版本中,我在head部分包含了所有必要的dojo模块和库:Javascript Dojo js工具包:动态填充选择的问题,javascript,html,select,dynamic,dojo,Javascript,Html,Select,Dynamic,Dojo,我对dijit.form.Select项有一些问题 在一个页面中,我有两个项目:一个是在加载html页面时填充的,另一个是根据用户在第一个页面上选择的选项填充的 下面是我现在所说的示例,我保持代码的简单性,但在实际版本中,我在head部分包含了所有必要的dojo模块和库: <html> <head> <script type="text/javascript">
<html>
<head>
<script type="text/javascript">
function updateB(val){
var menu = dojo.byId("selB");
menu.options.lenght=0;
if(val=="aaa")
menu.addOption({value: "aa", label: "aa"});
else
menu.addOption({value: "bb", label: "bb"});
}
</script>
</head>
<body>
<select id="selA" name="selA" dojoType="dijit.form.Select" style="width: 180px;" onchange="updateB(this.get('value'));"></select>
<select id="selB" name="selB" dojoType="dijit.form.Select" style="width: 180px; "></select>
<script type="text/javascript">
var menu = dojo.byId("selA");
menu.addOption({value: "aaa", label: "aaa"},{value: "bbb", label: "bbb"});
</script>
</body>
</html>
当我在浏览器中加载页面时,菜单selA包含选项aaa和bbb。但selB,当我在selA中选择aaa或bbb时,仍然为空。在javascript错误控制台中,我可以读取:dojo.byId[undefined]不是一个函数。我花了很多时间来做这项工作,尝试了很多选择,但没有运气。我只能在onload事件上填充dojoselect,而不能在与另一个select关联的onchange或与按钮关联的onclick上填充。使用标准HTML选择项,一切正常。
要解决此问题,我可以做些什么
谢谢这里或多或少是您的工作示例
<html>
<head>
<link href="js/dijit/themes/claro/claro.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script>
<script type="text/javascript">
dojo.require("dijit.form.Select");
function updateB(val){
var menu = dijit.byId("selB");
menu.options.lenght=0;
if(val=="aaa")
menu.addOption({value: "aa", label: "aa"});
else
menu.addOption({value: "bb", label: "bb"});
}
dojo.addOnLoad(function()
{
var menu = dijit.byId("selA");
menu.addOption([{value: "aaa", label: "aaa"},{value: "bbb", label: "bbb"}]);
});
</script>
</head>
<body>
<select id="selA" name="selA" dojoType="dijit.form.Select" style="width: 180px;" onchange="updateB(this.get('value'));"></select>
<select id="selB" name="selB" dojoType="dijit.form.Select" style="width: 180px; "></select>
</body>
我改变了什么:
移动了设置selA选择的代码
dojo.addOnLoad。这是必须的,,
因为以前你被审判的时候
要获取selA小部件,它没有完全
已创建,dojo无法返回其
还没有。Dojo创建它的小部件
页面完全加载后。之后
它创造了它所召唤的一切
addOnLoad函数。所以你应该
在这个函数中放置您所有的
初始化的东西。
Select是一种dijit类型的小部件,所以
应使用dijit.byId而不是
dojo.byId。