如何解决为什么此Javascript函数不起作用
| 我要在这里做的是使一个函数能够完成自定义选择元素的所有功能。因此,我制作了一个函数,该函数接受在函数本身中定义的三个参数(有关更多详细信息,请参见下面的代码)。我正在尝试完成以下任务:我希望参数成为各种元素(例如wrapper div)的ID,并且希望将这些参数放入函数中。我的代码如下。非常感谢function createList(ParentDivID,SelectMenuID,ListMenuID) {
$(\'#\' + ParentDivID + \"\'\");
$(\'#\' + SelectMenuID + \"\'\");
$(\'#\' + ListMenuID + \"\'\");
var options = $(\"#\" + SelectMenuID +\'\"\' ).find(\"option\");
$(options).each(function(){
$(ul).append(\'<li>\' +
$(this).text() + \'<span class=\"value\">\' +
$(this).val() + \'</span></li>\');
});
var ul = \'<ul id=\"\' + ListMenuID + \"></ul>\";
$(\'#\' + ParentDivID + \"\'\").append(ul).end().children(\'#\' + ListMenuID + \"\'\").hide().click(function(){$(ul).slideToggle();});
$(\"#\" + SelectMenuID + \'\"\').hide();
}
createList(fancySelectLarge,selectWalkerType,walkerTypeLi);
解决方法
通常情况有些混乱,但我已尝试尽可能地修复。
function createList(ParentDivID,SelectMenuID,ListMenuID) {
var options = $(\"#\" + SelectMenuID).find(\"option\");
var ul = $(\'<ul>\',{id: ListMenuID});
$(options).each(function(){
ul.append(\'<li>\' +
$(this).text() + \'<span class=\"value\">\' +
$(this).val() + \'</span></li>\');
});
$(\'#\' + ParentDivID)
.append(ul)
.end()
.children(\'#\' + ListMenuID)
.hide()
.click(function() { ul.slideToggle(); });
$(\"#\" + SelectMenuID).hide();
}
,大概是因为您的ID不会以引号字符结尾(HTML 4中的ID不允许),而是将它们附加到要使用jQuery搜索的字符串中。
,您只需要像这样做选择器
$(\'#\' + ParentDivID);
另外,您还需要停止交换\和\,因为这会导致您错过一些右引号
function createList(ParentDivID,ListMenuID) {
var options = $(\'#\' + SelectMenuID).find(\'option\');
$(options).each(function(){
$(ul).append(\'<li>\' +
$(this).text() + \'<span class=\"value\">\' +
$(this).val() + \'</span></li>\');
});
var ul = \'<ul id=\"\' + ListMenuID + \'\"></ul>\';
$(\'#\' + ParentDivID).append(ul).end().children(\'#\' + ListMenuID).hide().click(function(){$(ul).slideToggle();});
$(\'#\' + SelectMenuID).hide();
}
createList(fancySelectLarge,selectWalkerType,walkerTypeLi); `
,您搞砸了所有的字符串连接,例如:
$(\'#\' + ParentDivID + \"\'\");
应该是$(\'#\' + ParentDivID);
,调用函数时,这三个参数是否已经在代码的其他位置分配了变量?如果不是,并且实际上是字符串id
属性,则需要将其用引号引起来。
createList(\"fancySelectLarge\",\"selectWalkerType\",\"walkerTypeLi\");
注意:有关$(\'#\' + ParentDivID + \"\'\");
中错误引用的其他有价值的回答
,当执行到达时,execution9ѭ是未定义的,因为var ul
仅在随后的几行中声明。您还需要使用document.body.createElement(\'ul\')
而不是将\'<ul ...>\'
放在字符串中。
另外,第4行没有任何作用。
,您需要先定义ul
,然后才能使用它。另外,将其定义为$(\'<ul.../>\')
而不只是\'<ul.../>\'
,以便您可以根据该定义创建jQuery元素。
,而且您还想尝试创建这样的dom元素
$(\'<span class=\"value\">\')
代替字符串值\'<span class=\"value\">\'
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。