【问题标题】:0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'SumoSelect'0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法“SumoSelect”
【发布时间】:2015-10-27 16:20:39
【问题描述】:

我在尝试针对 aspx 页面上的选择选项元素调用 SumoSelect 函数时收到上述错误消息。

我的网页中有以下参考资料:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js" type="text/javascript"></script>
<script src="jquery.sumoselect.js"  type="text/javascript"></script>
<link href="sumoselect.css" rel="stylesheet" />

文件取自: https://github.com/HemantNegi/jquery.sumoselect/zipball/master

目前我从下载的项目中只包含以下内容:

  1. jquery.sumoselect.js

  2. sumoselect.css

我的 jQuery 正确定位了以下元素之一:

<script type="text/javascript">
$(document).ready(function () {

  var elements = document.getElementsByTagName("*");

  for (i = 0; i < elements.length; i++) {
    element = elements[i];
    name = element.id;

    if (name.match(/FieldId_3/)) {
      $(element).SumoSelect();
    }
  }
});
</script>

但是,当它到达 $(element).SumoSelect();它会产生错误“0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法'SumoSelect'

我对 jQuery/Javascript 非常陌生,但尝试了多种尝试调用此函数并传递对象的排列,但都没有奏效。

有什么想法可以帮助我让它工作吗?

如果能提供任何帮助,我将不胜感激。

【问题讨论】:

  • 为什么不给&lt;select&gt;标签一个类,然后使用$('.my-custom-select').SumoSelect();而不是遍历页面上的每个元素。同样element 将返回类似&lt;div class="my-div"&gt; 的东西,而不是像.my-div 这样的jQuery 选择器。
  • 您收到的错误消息表明尚未加载 SumoSelect 插件。您是否检查过控制台是否有错误? sumoselect 插件的路径是否正确?
  • 您还包括哪些其他资源?也许还有另一个版本的 jQuery。

标签: javascript jquery html sumoselect.js


【解决方案1】:

首先,您使用的是 jQuery,为什么还要使用 Vanilla JavaScript 来获取 DOM 元素,并遍历所有集合,仅通过其 id 获取一个元素? (id 属性在文档中应该是唯一的)

您可以重构代码并仅在满足选择器条件的元素上初始化插件:

$(document).ready(function () {
  $('#FieldId_3').SumoSelect();
});

如果没有元素符合条件,插件 not 将被初始化(安全),因为 jQuery 返回一个空的 like-array 对象。

显然,带有 id FieldId_3 的元素必须是 select 元素,如此处所述:https://hemantnegi.github.io/jquery.sumoselect/

【讨论】:

  • 谢谢,我还是新手,我在乱写代码,就像没有明天一样。
【解决方案2】:

正如其他人所说,您用来运行 SumoSelect 的方法有点矫枉过正,委婉地说。

但是,假设jquery.sumoselect.js 文件与所讨论的 HTML 文件位于同一目录中,我已经测试了您的代码并且它确实有效。

那么,我建议您的问题是找不到 SumoSelect jQuery 插件。

不过,一旦该错误得到修复,您应该按照 Nick R 建议的方式运行 SumoSelect。

【讨论】:

    【解决方案3】:

    (为了完整起见,我与 Malieki 一起工作并且已经选择了它......)经过几个小时的反复试验,我发现当我注释掉下面的代码时,sumoselect 部分开始正常工作。 我们首先尝试使用 Saplin.Controls DropDownCheckBoxes,然后找到 sumoselect,但我们在相同的 aspx 中留下了一个控件(用于 Saplin)。

        <asp:DropDownCheckBoxes ID="TypeCB" runat="server" OnSelectedIndexChanged="TypeCB_SelectedItemsChanged" AutoPostBack="True" Font-Size="7pt" font-family="Verdana" CssClass="txt_box"
        AddJQueryReference="True" meta:resourcekey="checkBoxes2Resource1" UseButtons="True" UseSelectAllNode="False">  
        <Style2 SelectBoxWidth="160" DropDownBoxBoxHeight="230" DropDownBoxBoxWidth="200" />
        <Texts OkButton="Ok" CancelButton="Cancel" SelectAllNode="ALL" SelectBoxCaption="Type" />
        </asp:DropDownCheckBoxes>
    

    当这个控件被移除时,相扑 jquery 的东西都开始正常工作了。 我只能假设他们之间存在冲突。 感谢大家的帮助,我们都是新手。

    【讨论】:

    • 我们知道脚本是运行 sumoselect 的最糟糕的方式,它只是为了调试。我们正在使用 $('.my-custom-select').SumoSelect();在实际代码中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    相关资源
    最近更新 更多