如何获取indexOf数组中的元素

时间:2015-03-29 04:38:22

标签: javascript

我想在JavaScript中获取indexOf元素数组中的元素。

以下是代码:

function redrawchatbox(chatbox) {
//chatbox is a html element.
chatbox.remove();
variable = variable - 280;
redraw = document.getElementsByName("chatbox");
// this is the error - gives me redraw.indexOf is not a function.
closedchatbox = redraw.indexOf(chatbox);
for (i = redraw.length; i > 0; i--) {
    x = i - 1;
    redraw[x].style.right = (parseInt(redraw[x].style.right.replace("px", "")) - 280) + "px";
}}

我希望关闭聊天框的索引,以便我可以在正确的位置重绘所有聊天框。当我在重绘数组上使用indexOf时,它会抛出该错误。

我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:2)

那是因为getElementsByName返回HTMLCollection,这是一个类似数组的对象而不是数组。您应该将集合转换为数组,然后使用indexOf方法。

var chatboxArr = [].slice.call(closedchatbox);
var index = chatboxArr.indexOf(chatbox);

Array.prototype.slice方法可用于创建数组的浅表副本。在上面的代码段中,slice方法call与集合作为​​this值进行HTMLCollection,结果它返回一个包含{{1}}项的数组

答案 1 :(得分:0)

替换它:

closedchatbox = redraw.indexOf(chatbox);

用这个:

closedchatbox = Array.prototype.indexOf.call(redraw, chatbox);

getElementsByName返回NodeList,它不是数组,而是“类似数组的对象”。它本身没有indexOf方法,但Array方法可以通过这种方式应用于它。

答案 2 :(得分:0)

您收到该错误,因为getElementsByName返回NodeList对象。