地狱全部,
我有一个奇怪的问题:
//dataText hold current language data that's gathered from another function
//pick one to test it out
//if english data gathered
var dataText = ["Data uploads"];
//if french data gathered
var dataText = ["Envois de données"];
function lang_lib(lang) {
var data_fre = [13, 'Envois de données'];
var data_eng = [14, 'Data uploads'];
var data_lang, rep_lang;
switch(lang) {
case "English":
data_lang = data_eng;
data_rep = rep_eng;
break;
case "Français":
data_lang = data_fre;
data_rep = rep_fre;
break;
default:
$('table.infobox tbody').append('<tr><td id="lang-fail"><ul class="first last"><li>User language is not available</li></ul></td></tr>');
};
this.data_uploads = data_lang[1];
}
_lang = new lang_lib($('#toplinks-language').text());
//if lang_lib("English")
alert($.inArray(_lang.data_uploads, dataText)); // 0
//if lang_lib("Français")
alert($.inArray(_lang.data_uploads, dataText)); // -1
我缩短了代码,但它应该大致了解我想要实现的目标。
我知道为什么我会在两个数组中使用相同的数据,但data_fre和data_eng具有特定于语言的dataText信息以及其他语言特定数据,这似乎很奇怪。 dataText将具有非特定语言数据,这就是为什么我再次测试data_fre或data_eng以查找要使用的语言。
我无法弄清楚为什么它会返回-1因为我设置了其他语言(特殊字符也像俄语文本一样)并且它们都返回0。
感谢帮助:)
答案 0 :(得分:2)
-1表示错误。 0表示'在位置0'。如果不了解有关数据的更多信息,我希望它能正常运行。
答案 1 :(得分:1)
字符串与数字不匹配。
简单测试
var arr = [13, 'Envois de données'];
console.log($.inArray(13,arr)); // 0 - matches as a number
console.log($.inArray("13",arr)); // -1 - matches as a string
答案 2 :(得分:0)
好的,我发现它是什么。
我在收集dataText数据的函数中使用了$.trim()
。因为我alert()
时无法看到任何前导或尾随空格,所以它让我感到困惑,为什么它不起作用。
这解释了为什么$.inArray()
与“Envoisdedonnées”不符合“Envoisdedonnées”。
再次感谢大家看一看:)