TypeError:undefined不是" indexOf"上的函数?

时间:2014-07-02 16:31:16

标签: javascript typeerror indexof

在我的DOM中爬行,我找到了这个headscratcher:

我正在使用以下作业评估元素:

if (e.container.context.classList.indexOf('editable-notes') == - 1) return;

我的开发人员工具包告诉我这应该有用......我想。但它爆发了:

Uncaught TypeError: undefined is not a function.

......这对我来说很奇怪。所以我提出了一个断点,并检查了这些值。 e.container.context有效回复:

<td title class=​"truncate editable-notes k-edit-cell" role=​"gridcell" id=​"partner-list_active_cell" data-role=​"editable">​
<input class=​"k-textbox" data-val=​"true" data-val-length=​"The field Notes must be a string with a maximum length of 500." data-val-length-max=​"500" id=​"Notes" name=​"Notes" type=​"text" value data-bind=​"value:​Notes">​
<span class=​"field-validation-valid" data-valmsg-for=​"Notes" data-valmsg-replace=​"true" style=​"display:​ none;​">​</span>​
</td>

......到目前为止,非常好。 e.container.context.classList还带有有效值:

["truncate", "editable-notes", "k-edit-cell"]

... e.container.context.classList.indexOf('editable-notes')的评估失败了:

TypeError: undefined is not a function
message: "undefined is not a function"
stack: (...)
get stack: function () { [native code] }
set stack: function () { [native code] }
__proto__: Error

...所以现在我很难过。我认为indexOf得到了普遍的支持。我在做一些蠢事吗?

1 个答案:

答案 0 :(得分:4)

classList个属性包含DOMTokenList个,它们不是数组且没有indexOf。他们所拥有的是a method来完全按照您的需要做,但更直截了当:

if (!e.container.context.classList.contains('editable-notes'))
    return;