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
。。。就是不能用+=:)好吧,你可以,不是很好的练习。。。就是不能用+=:)