Javascript innerHTML关闭标记

Javascript innerHTML关闭标记,javascript,jquery,html,Javascript,Jquery,Html,我有以下交换机结构: switch (ratio) { case "16:9": imgContainer.innerHTML = '<img src="images/test-rata-de-aspect.jpg">' break case "4:3": imgContainer.innerHTML = '<img src="images/schita-usi-2.jpg">' break defa

我有以下交换机结构:

switch (ratio) {
  case "16:9":
    imgContainer.innerHTML = '<img src="images/test-rata-de-aspect.jpg">'       
    break       
  case "4:3":
    imgContainer.innerHTML = '<img src="images/schita-usi-2.jpg">'
    break
  default:
    imgContainer.innerHTML = '<img src="images/schita-usi-1.jpg" usemap="#schita-usi-1">'
    imgContainer.innerHTML += '<map name="schita-usi-1">'
    imgContainer.innerHTML += '<area shape="rect" coords="191,108,577,973" href="test.html"  alt="" title="">'  
    imgContainer.innerHTML += '</map>'
    break    
}   
此变量在控制台中生成错误:SyntaxError:missing;这一行的before语句:
var htmlcode+=''

说到JavaScript,我是个新手。我在代码中没有看到任何HTML错误,这里会有什么问题?在这种情况下,是什么导致
标记自动关闭


如果需要提供更多详细信息,请告诉我。

您需要删除第一行后面的
var
关键字,使其成为:

var htmlcode = '<img src="images/schita-usi-1.jpg" usemap="#schita-usi-1">';
htmlcode += '<map name="schita-usi-1">';
htmlcode += '<area shape="rect" coords="191,108,577,973" href="test.html"  alt="" title="">';
htmlcode += '</map>';
var htmlcode='';
htmlcode+='';
htmlcode+='';
htmlcode+='';

使用
var
声明变量后,不要对同一变量再次使用
var
关键字。

您需要删除第一行后面的
var
关键字,使其成为:

var htmlcode = '<img src="images/schita-usi-1.jpg" usemap="#schita-usi-1">';
htmlcode += '<map name="schita-usi-1">';
htmlcode += '<area shape="rect" coords="191,108,577,973" href="test.html"  alt="" title="">';
htmlcode += '</map>';
var htmlcode='';
htmlcode+='';
htmlcode+='';
htmlcode+='';

使用
var
声明变量后,不要对同一变量再次使用
var
关键字。

您的路径正确。这种行为首先发生的原因是,一旦您在页面上设置了live DOM元素的HTML,浏览器将尝试为您“纠正”任何损坏的HTML。这包括结束标记

如您所愿,解决方案是首先将所有字符串放在一起,然后将结果设置为元素的HTML。但在您的尝试中,至少有一个问题是,您试图一次又一次地重新声明同一个变量

您实际上不需要变量。您只需在一行代码中构建字符串并将其设置为HTML。像这样简单的事情:

imgContainer.innerHTML = '<img src="images/schita-usi-1.jpg" usemap="#schita-usi-1">'
                       + '<map name="schita-usi-1">'
                       + '<area shape="rect" coords="191,108,577,973" href="test.html"  alt="" title="">'  
                       + '</map>';
imgContainer.innerHTML=''
+ ''
+ ''  
+ '';

这为您提供了代码中所需的多行格式(我假定为可读性),但将整个操作作为单个赋值执行。首先计算
=
右侧的所有内容(所有“行”,即使在分号之前都是一条“代码行”),然后将结果分配到
=

左侧,您的路径是正确的。这种行为首先发生的原因是,一旦您在页面上设置了live DOM元素的HTML,浏览器将尝试为您“纠正”任何损坏的HTML。这包括结束标记

如您所愿,解决方案是首先将所有字符串放在一起,然后将结果设置为元素的HTML。但在您的尝试中,至少有一个问题是,您试图一次又一次地重新声明同一个变量

您实际上不需要变量。您只需在一行代码中构建字符串并将其设置为HTML。像这样简单的事情:

imgContainer.innerHTML = '<img src="images/schita-usi-1.jpg" usemap="#schita-usi-1">'
                       + '<map name="schita-usi-1">'
                       + '<area shape="rect" coords="191,108,577,973" href="test.html"  alt="" title="">'  
                       + '</map>';
imgContainer.innerHTML=''
+ ''
+ ''  
+ '';

这为您提供了代码中所需的多行格式(我假定为可读性),但将整个操作作为单个赋值执行。首先计算
=
右侧的所有内容(所有“行”,即使在分号之前都是一条“代码行”),然后将结果分配到
=

左侧,因为它就是这样做的。。。您不是在构建字符串,而是附加到DOM,解析器会在关闭标记时更正html标记。如果您想构建一个字符串,请构建它,然后在完成后追加它。您这样做是正确的,但您的错误很简单,每行都包含
var
。。。您不是在构建字符串,而是附加到DOM,解析器会在关闭标记时更正html标记。如果您想构建一个字符串,请构建它,然后在完成后追加它。您这样做是正确的,但您的错误很简单,每行都包含
var
。。。就是不能用+=:)好吧,你可以,不是很好的练习。。。就是不能用+=:)