Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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中,但不在其他浏览器中_Javascript_Html_Xmlhttprequest - Fatal编程技术网

Javascript 为什么字符是';未定义';在internet explorer中,但不在其他浏览器中

Javascript 为什么字符是';未定义';在internet explorer中,但不在其他浏览器中,javascript,html,xmlhttprequest,Javascript,Html,Xmlhttprequest,请看一下这个网站 该页面上的脚本在opera、firefox chrome等浏览器中运行,并按要求打印出“random_1”,但在internet explorer中它只打印出(UndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefine

请看一下这个网站 该页面上的脚本在opera、firefox chrome等浏览器中运行,并按要求打印出“random_1”,但在internet explorer中它只打印出(UndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefinedUndefined”),即每个字母的。我的问题是,你们当中的一些聪明人是否知道这个问题的答案

编辑

这是密码

<html>
<head>
<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var txt;
var buildName = "";
var xmlhttp;
/**
 * Find a longest common subsenquence.
 *
 * Note: this is not necessarily the only possible longest common subsequence though!
 */
function lcs(listX, listY) {
        return lcsBackTrack(
                lcsLengths(listX, listY),
                listX, listY, 
                listX.length, listY.length);
}

/**
 * Iteratively memoize a matrix of longest common subsequence lengths.
 */
function lcsLengths(listX, listY) {
        var lenX = listX.length;
        var lenY = listY.length;

        // Initialize a lenX+1 x lenY+1 matrix
        var memo = [lenX+1];
        for (var i = 0; i < lenX+1; i++) {
                memo[i] = [lenY+1];
                for (var j = 0; j < lenY+1; j++) {
                        memo[i][j] = 0;
                }
        }

        // Memoize the lcs length at each position in the matrix
        for (var i = 1; i < lenX+1; i++) {
                for (var j = 1; j < lenY+1; j++) {
                        if (listX[i-1] == listY[j-1]) {
                                memo[i][j] = memo[i-1][j-1] + 1;
                        }
                        else {
                                memo[i][j] = Math.max(
                                        memo[i][j-1],
                                        memo[i-1][j]);
                        }
                }
        }

        return memo;
}

/**
 * Recursively read back a memoized matrix of longest common subsequence lengths
 * to find a longest common subsequence.
 */
function lcsBackTrack(memo, listX, listY, posX, posY) {

        // base case
        if (posX == 0 || posY == 0) {
                return "";
        }

        // matcth => go up and left
        else if (listX [posX-1] == listY[posY-1]) {
                return lcsBackTrack(memo, listX, listY, posX-1, posY-1) + listX[posX-1];
        }

        else {
                // go up
                if (memo[posX][posY-1] > memo[posX-1][posY]) { 
                        return lcsBackTrack(memo, listX, listY, posX, posY-1);
                }

                // go left
                else {
                        return lcsBackTrack(memo, listX, listY, posX-1, posY);
                }
        }
}

function loadXMLDoc(url,cfunc)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}


function myFunction()
{

    loadXMLDoc("http://tdsoft.se/testni.html",handleXML);


}
var checkState = function(xmlhttp, callback) {

try{
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        callback();
        } 
        else {
            // Check back again 1 sec later
            setTimeout(checkState, 1000);
        }
    }
    catch(err){
        setTimeout(checkState, 1000);
    }
};


function handleXML()
  {
checkState(xmlhttp, function() {

   txt=xmlhttp.responseText;
buildName = "random_1";
var myvar = "";
txt = "" + txt;
var lcsString = lcs(txt, buildName);
document.write(lcsString);
});
  }
</script>
</head>
<body onLoad="myFunction()">
</body>
</html>

var-txt;
var buildName=“”;
var-xmlhttp;
/**
*找到最长的公共子项。
*
*注意:这不一定是唯一可能的最长公共子序列!
*/
功能lcs(列表X、列表Y){
返回lcsBackTrack(
LcsLength(listX,listY),
李斯特,李斯特,
listX.length,listY.length);
}
/**
*迭代记忆最长公共子序列长度的矩阵。
*/
函数LcsLength(列表X、列表Y){
var lenX=listX.length;
var lenY=listY.length;
//初始化lenX+1 x lenY+1矩阵
var备忘录=[lenX+1];
对于(变量i=0;i向上向左走
else if(listX[posX-1]==listY[posY-1]){
返回lcsBackTrack(memo,listX,listY,posX-1,posY-1)+listX[posX-1];
}
否则{
//上升
if(memo[posX][posY-1]>memo[posX-1][posY]){
返回lcsBackTrack(备忘录、列表X、列表Y、posX、posY-1);
}
//向左走
否则{
返回lcsBackTrack(备忘录、列表X、列表Y、posX-1、posY);
}
}
}
函数loadXMLDoc(url,cfunc)
{
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
onreadystatechange=cfunc;
open(“GET”,url,true);
xmlhttp.send();
}
函数myFunction()
{
loadXMLDoc(“http://tdsoft.se/testni.html“,handleXML);
}
var checkState=函数(xmlhttp,回调){
试一试{
if(xmlhttp.readyState==4&&xmlhttp.status==200){
回调();
} 
否则{
//1秒钟后再次检查
设置超时(检查状态,1000);
}
}
捕捉(错误){
设置超时(检查状态,1000);
}
};
函数handleXML()
{
检查状态(xmlhttp,function(){
txt=xmlhttp.responseText;
buildName=“random_1”;
var myvar=“”;
txt=”“+txt;
var lcsString=lcs(txt,buildName);
document.write(lcsString);
});
}

[lenY+1]
例如,不使用
lenY+1
元素初始化数组。它初始化一个数组,其中一个元素设置为
lenY+1
。这并不重要,因为你把它们设置为零。。。两次都将其更改为
[]

我很难理解您的代码,但我相信问题在于IE只允许您使用
charAt
访问字符串,而不使用括号符号,您在这里似乎使用了括号符号:

listX[i-1] == listY[j-1]
在这里:

else if (listX [posX-1] == listY[posY-1]) {

所以这些比较总是返回
true
。这可能是问题所在吗?

这在IE中不起作用,
listX[posX-1]
。这样做的结果是“未定义”,因此您应该使用另一种方法来获取char,比如
chatAt()
方法对IE具有指定IE模式的特殊meta感到惊讶。 将其设置为IE8解决了这个问题![]运算符正在访问字符

见:

您试用过哪个版本的internet explorer?听起来像是字符编码问题。确保您的页面使用与响应文本相同的编码进行显示。代码是什么,您的document.write或您正在执行的任何操作都不会在view source上显示任何内容。@Epasarello似乎只在IE其他浏览器中出现,显示JS脚本块
var memo=[lenX+1]这不会创建lenX+1数组,而是创建一个值(lenX+1)为该元素的单个元素数组。既然您要自己初始化所有元素,那么实际上只需要
[]
。@Sotiris那么实现时会是什么样子呢?listX.charAt([posX-1])不要像listX.charAt(posX-1)那样工作,试试看。它现在只是说“/html>”,但在另一个浏览器中仍然可以工作。应该是html代码不好。这是另一个问题。