我在论坛上找到了不同的答案但找不到解决方案。所以我有一个像这样的数组:
var valuesArray = ["negative", "underweight", "neutral", "overweight", "positive"];
我有两个变量:
var previousRating
和var currentRating
动态分配了valuesArray
中的一个值。
我正在尝试在previousRating
中找到currentRating
和valuesArray
的索引,如下所示:
var prevRatingCounter = valuesArray.indexOf(previousRating.toLowerCase());
var curRatingCouter = valuesArray.indexOf(currentRating.toLowerCase());
previousRating
和curRating
是字符串值,但我仍然收到错误:
Object doesn't support this property or method
有人可以帮我解决这个问题。谢谢。
答案 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存在问题。
这很好用:
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;