![](/img/trans.png)
[英]Why isn't this working on Internet Explorer? [jQuery, radio, selectors]
[英]why isn't this script working in internet explorer? (Using v 7)
我在堆棧溢出的另一個線程中看到了這個腳本,並嘗試使用它。 現在問題來了,該腳本在除 Internet Explorer 之外的所有瀏覽器中都可以正常工作(我使用的是版本 7),這里它只返回第一個字符串(如果它是一個較大的字符串,則返回該字符串的第一行),但在所有其他瀏覽器中瀏覽器它返回我想要的,換句話說,最長的常見 substring。 我只是想知道下面這段代碼中是否有一些明顯的錯誤,你們中的一些聰明人會指出 Internet Explorer 不喜歡,如果是,如何改進它? 提前感謝=)
function longestCommonSubstring(string1, string2){
// init max value
var longestCommonSubstring = 0;
var theCommonString = '';
// init 2D array with 0
var table = Array(string1.length);
for(a = 0; a <= string1.length; a++){
table[a] = Array(string2.length);
for(b = 0; b <= string2.length; b++){
table[a][b] = 0;
}
}
// fill table
for(var i = 0; i < string1.length; i++){
for(var j = 0; j < string2.length; j++){
if(string1[i]==string2[j]){
if(table[i][j] == 0){
table[i+1][j+1] = 1;
} else {
table[i+1][j+1] = table[i][j] + 1;
}
if(table[i+1][j+1] > longestCommonSubstring){
longestCommonSubstring = table[i+1][j+1];
theCommonString = string1.substr(i + 1 - longestCommonSubstring, longestCommonSubstring);
}
} else {
table[i+1][j+1] = 0;
}
}
}
return theCommonString;
}
編輯_ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ _ _ __ _ __ _ __ _ __ _
這就是我的代碼在建議改進后現在的樣子,但它在 Internet Explorer 中仍然不起作用,它只是(在我的情況下)返回文件的第一行。
function longestCommonSubstring(string1, string2){
// init max value
var longestCommonSubstring = 0;
var theCommonString = '';
var a;
var b;
// init 2D array with 0
var table = [string1.length];
for(a = 0; a <= string1.length; a++){
table[a] = [string2.length];
for(b = 0; b <= string2.length; b++){
table[a][b] = 0;
}
}
// fill table
for(var i = 0; i < string1.length; i++){
for(var j = 0; j < string2.length; j++){
if(string1[i]===string2[j]){
if(table[i][j] === 0){
table[i+1][j+1] = 1;
} else {
table[i+1][j+1] = table[i][j] + 1;
}
if(table[i+1][j+1] > longestCommonSubstring){
longestCommonSubstring = table[i+1][j+1];
theCommonString = string1.substr(i + 1 - longestCommonSubstring, longestCommonSubstring);
}
} else {
table[i+1][j+1] = 0;
}
}
}
return theCommonString;
}
IE7 不允許您像 arrays 那樣訪問字符串; 您需要改用 substring 屬性:
if(string1.substring(i, i + 1)==string2.substring(j, j + 1)){
如果您想知道,我通過在這里和那里放置警報語句來解決這個問題:字符串比較成功后,Firefox 顯示“a=a”但 IE7 顯示“undefined=undefined”:^\
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.