Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';这个脚本在internet explorer中不工作吗?(使用V7)_Javascript_Html - Fatal编程技术网

Javascript 为什么不是';这个脚本在internet explorer中不工作吗?(使用V7)

Javascript 为什么不是';这个脚本在internet explorer中不工作吗?(使用V7),javascript,html,Javascript,Html,我在stack overflow上的另一个线程中看到了这个脚本,并尝试使用它。现在问题来了,除了internet explorer(我使用的是版本7)之外,脚本在所有浏览器中都可以正常工作,在这里它只返回第一个字符串(如果是较大的字符串,则返回该字符串的第一行),但在所有其他浏览器中,它返回我想要的,换句话说,最长的公共子字符串。我只是想知道下面的代码中是否有一些明显的错误,你们这些聪明的家伙可以指出Internet explorer不喜欢,如果是,如何改进它? 提前感谢=) 函数longest

我在stack overflow上的另一个线程中看到了这个脚本,并尝试使用它。现在问题来了,除了internet explorer(我使用的是版本7)之外,脚本在所有浏览器中都可以正常工作,在这里它只返回第一个字符串(如果是较大的字符串,则返回该字符串的第一行),但在所有其他浏览器中,它返回我想要的,换句话说,最长的公共子字符串。我只是想知道下面的代码中是否有一些明显的错误,你们这些聪明的家伙可以指出Internet explorer不喜欢,如果是,如何改进它? 提前感谢=)

函数longestCommonSubstring(string1、string2){
//初始最大值
var longestCommonSubstring=0;
var theCommonString='';
//使用0初始化二维数组
var table=数组(string1.length);

对于(a=0;aIE7,不允许您在执行操作时以数组的形式访问字符串;您需要改用substring属性:

if(string1.substring(i, i + 1)==string2.substring(j, j + 1)){

如果你想知道的话,我在这里和那里放置了一些警告语句来解决这个问题:在字符串比较成功后,Firefox显示“a=a”,而IE7显示“undefined=undefined”:^ \

好吧,这些可能不是你的问题,但请确保“a”和“b”是正确的在第一个嵌套循环中,使用
var
声明,并且在初始化数组时,只使用
[]
而不是
Array(something)
@Pointy不,谢谢=)请确保您使用的是!==和===它们不执行类型强制。@Greg Guida我这样做了,但仍然不起作用:/抱歉,这里还有一个小小的修正,@Pointy忘了提到
table=[string1.length]
只会生成
table[0]==string1.length
。JavaScript中的数组是动态的,因此不需要像Java中那样为它们指定长度。
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;
}
if(string1.substring(i, i + 1)==string2.substring(j, j + 1)){