簡體   English   中英

為什么這個腳本不能在 Internet Explorer 中運行? (使用 v 7)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM