Object不支持此属性或方法“indexOf”

时间:2015-06-05 17:34:33

标签: asp-classic jscript

我在论坛上找到了不同的答案但找不到解决方案。所以我有一个像这样的数组:

var valuesArray = ["negative", "underweight", "neutral", "overweight", "positive"];

我有两个变量: var previousRatingvar currentRating动态分配了valuesArray中的一个值。

我正在尝试在previousRating中找到currentRatingvaluesArray的索引,如下所示:

var prevRatingCounter = valuesArray.indexOf(previousRating.toLowerCase());
var curRatingCouter = valuesArray.indexOf(currentRating.toLowerCase());

previousRatingcurRating是字符串值,但我仍然收到错误:

Object doesn't support this property or method

有人可以帮我解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:3)

this answer中所述,服务器端JScript用于编写经典ASP的ECMAScript版本仅为3.0 - 数组的方法indexOf()仅在ECMAScript的5.0版本中引入,我可以说,因此根本就不存在。

编写这样的方法并不难,这是一个有效的代码示例:

<%
function IndexOf(arr, item) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == item) {
            return i;
        }
    }
    return -1;
}
%>

然后更改代码以使用它,例如

var prevRatingCounter = IndexOf(valuesArray, previousRating.toLowerCase());

如果您需要在许多不同的文件中使用它,您可以将该功能放在一个名为eg的文件中。 &#34; Common.asp&#34;然后将它包含在您需要的任何地方。

答案 1 :(得分:0)

我认为您的inizialization存在问题。

这很好用:

&#13;
&#13;
    	var valuesArray = ["negative", "underweight", "neutral", "overweight", "positive"];

    	var previousRating = "underweight";
    	var currentRating = "neutral";

    	var valuesArray = ["negative", "underweight", "neutral", "overweight", "positive"];

    	var prevRatingCounter = valuesArray.indexOf(previousRating.toLowerCase());

    	var curRatingCouter = valuesArray.indexOf(currentRating.toLowerCase());

    	document.write(prevRatingCounter+" "+curRatingCouter);
&#13;
&#13;
&#13;