FirefoxおよびOperaのJavascriptでindexOf呼び出しを使用してエラーが発生します。 IEで正常に動作します。
エラーメッセージは次のとおりです。
アクション
function anonymous(Grid, Row, Col, Event) {
return Grid.ActionShowPopupMenu();
}
イベントOnRightClickが例外で失敗した場合:row.id.indexOfは関数ではありません
文字列にJavascriptで別の文字列が含まれていることをテストし、文字列のindexOf関数を使用しています。ただし、呼び出しはJQuery関数で行われます。おそらくそれが問題の理由ですか?文字列に別の文字列が含まれているかどうかをテストするためにJavascriptでindexOfを使用する代わりの方法はありますか?この問題の回避策はありますか?
String.indexOfは、すべてのブラウザで完全に問題ありません。 idプロパティのrowオブジェクトは文字列ではないと思います(または配列、ところで、indexOfは配列でも定義されているため(IEを除く))
indexOfは、IE9より前のIEでは問題ありません。コードをIE <9で機能させたい場合は、ドロップできる一般的なjsファイルで非準拠ブラウザーのメソッドを定義する必要があります。詳細については、 このスレッド を参照してください。コードは Mozilla から取得されます。
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 1) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}
indexOf()はすべてのブラウザで問題ありません。文字列と配列の両方用に設計されています。これを参照してください: http://jsfiddle.net/SquTp/
Domの選択に問題があるか、間違った方法で使用している可能性があります。