我是Javascript的新手,基本上与网络相关的一切 编码。我在FF中使用InnerHTML有一个简单的问题,我希望你能 帮助我。
我正在使用这段代码,应生成一个简单的html输入行, 在IE中它工作正常(虽然当我加载它我得到“我应该 在顶部启用activeX msg,但在FF中根本不起作用,我可以 看到它在页面上的来源,但它没有显示任何东西......
<div id="mainDiv"></div> <script type="text/javascript"> var siteBoxes = '<form action=HTMLPage.htm name="myform">'; for (var i = 0; i < arr1.length; i++) { siteBoxes += '<INPUT TYPE="checkbox" id="box'+i+'"
VALUE = “ '+ ARR1 [I] +'”/&GT; '+ arrNames [I] +'
'; } siteBoxes + =''; 的document.getElementById( “mainDiv”)的innerHTML = siteBoxes。我确定这是一个简单的解决方案,我尝试在网上搜索,但是 我已经没力了,我希望你们中的任何一个人都很善良 可以帮助我。
提前致谢!!!
好的,问题在于头部的数组定义。 我只是注意到在FF的错误控制台中我得到一个msg,arr1是未定义的,但它是,我甚至尝试将它移动到正文并且它没有改变,仍然未定义......并且它在IE中工作。
它可能是数组定义的东西吗?它与IE和FF ???不同
var arr1 = new Array(
"http://www.google.com",
"http://www.yahoo.com",
"http://www.cnet.com",
"http://www.google.ar/search?q="
);
再次,它在IE中运行良好,但在FF
中运行不佳答案 0 :(得分:1)
乍一看我注意到的事情。
<div id="mainDiv"></div>
<script type="text/javascript">
var siteBoxes = '<form action="HTMLPage.htm" name="myform">';//put quotes around page
for (var i = 0; i < arr1.length; i++) {
siteBoxes += '<INPUT TYPE="checkbox" id="box'+i+'" VALUE="'+arr1[i]+'"\/>
'+arrNames[i]+'<br \/><br \/>';
}
siteBoxes += '<\/form>';
document.getElementById("mainDiv").innerHTML=siteBoxes;
arr1永远不会从你提交给我们的代码中声明。
答案 1 :(得分:0)
适用于Opera,IE和FF。
尝试取消输出;
document.getElementById("mainDiv").innerHTML = unescape(siteBoxes);
答案 2 :(得分:0)
脚本标记中的结束引号有问题。如果我删除它并键入一个新代码,则代码可以正常工作。
答案 3 :(得分:0)
代码的其余部分一定存在问题,因为当我更改代码时。它工作正常。
<html>
<head>
</head>
<body>
<div id="mainDiv"></div>
<script type="text/javascript">
var arr1 = new Array();
var arrNames = new Array();
arr1[0] = "test";
arrNames[0] = "nameTest";
var siteBoxes = '<form action=HTMLPage.htm name="myform">';
for (var i = 0; i < arr1.length; i++) {
siteBoxes += '<INPUT TYPE="checkbox" id="box'+i+'" VALUE="'+arr1[i]+'"/> '+arrNames[i]+'<br /><br />';
}
siteBoxes += '</form>';
document.getElementById("mainDiv").innerHTML = siteBoxes;
</script>
</body>
</html>
答案 4 :(得分:0)
这可能是一种更简洁的实现方法(参见代码中的注释):
//You can use the simple way of creating an array, and instead of having two
//arrays that represent the names and urls, just make a single array of JSON
var sitesArray = [
{siteName: "Google",siteUrl:"http://www.google.com"},
{siteName: "Yahoo",siteUrl:"http://www.yahoo.com"},
{siteName: "CNET",siteUrl:"http://www.cnet.com"},
{siteName: "Google Search",siteUrl:"http://www.google.ar/search?q="}
];
//Create an ouput array where you'll compile your html
var outputArray = [];
//Now loop through sitesArray and push the strings onto the ouputArray
for (var i=0,len=arr1.length;i < len;++i) {
outputArray.push("<input type=\"checkbox\" id=\"box",i,"\" ",
"value="\",sitesArray[i].siteUrl,"\" /> ",
sitesArray[i].siteName,"<br /><br />");
}
document.getElementById("mainDiv").innerHTML = outputArray.join("");
建议这一点的主要原因是字符串连接可能非常慢,特别是如果你有很多长字符串。它在Firefox中并不是一个大问题,但它肯定是IE中的一个问题。因此,将字符串推送到数组,然后在最后加入它们将为您提供更好的性能。