Javascript InnerHTML中调用的函数中存在变量错误
我不熟悉编码,并且面临从innerhtml调用函数的问题。我怀疑问题可能与innerhtml语法有关。 有问题的部分是:Javascript InnerHTML中调用的函数中存在变量错误,javascript,html,variables,innerhtml,Javascript,Html,Variables,Innerhtml,我不熟悉编码,并且面临从innerhtml调用函数的问题。我怀疑问题可能与innerhtml语法有关。 有问题的部分是: document.getElementById('arrowback').innerHTML = "<a href='#' onclick='return imtest(icount,imname);'><img src=/Images/ib/A2.png></a>"; document.getElementById('arrowback
document.getElementById('arrowback').innerHTML = "<a href='#' onclick='return imtest(icount,imname);'><img src=/Images/ib/A2.png></a>";
document.getElementById('arrowback').innerHTML=“”;
如果我将语法更改为以下,则它适用于icount,这是一个数值,而不是imname:
document.getElementById('arrowback').innerHTML = "<a href='#' onclick='return imtest("+icount+");'><img src=/Images/ib/A2.png></a>";
document.getElementById('arrowback').innerHTML=“”;
我想通过innerhtml方法调用带有2个变量的imtest函数。以下是供参考的完整代码:
<script type="text/javascript">
function clicker(buildname, imname, icount){
var displaybox=document.getElementById('displaybox');
if (displaybox.style.display === "none") {
alert(imname);
document.getElementById('imagebox').innerHTML = "<img src=" + imname + icount+".jpg height='400'>";
document.getElementById('arrowback').innerHTML = "<a href='#' onclick= 'return imtest(icount,imname);'><img src=/Images/ib/A2.png></a>";
document.getElementById('btitle').innerHTML = buildname;
} else {
document.getElementById('displaybox').style.display = "none";
}
return false;
}
function imtest(icount, imname) {
alert(icount);
}
</script>
功能点击器(buildname、imname、icount){
var displaybox=document.getElementById('displaybox');
如果(displaybox.style.display==“无”){
警报(imname);
document.getElementById('imagebox')。innerHTML=“”;
document.getElementById('arrowback').innerHTML=“”;
document.getElementById('btitle')。innerHTML=buildname;
}否则{
document.getElementById('displaybox').style.display=“无”;
}
返回false;
}
功能imtest(icount,imname){
警报(icount);
}
您只需在imname
周围添加引号即可:
document.getElementById('imagebox').innerHTML = '<img src="' + imname + icount + '.jpg" height="400">';
document.getElementById('arrowback').innerHTML = '<a href="#" onclick="return imtest(' + icount + ', \"' + imname + '\");"><img src="/Images/ib/A2.png"></a>';
document.getElementById('imagebox')。innerHTML='';
document.getElementById('arrowback')。innerHTML='';
顺便说一句,您忘记了src
属性值周围的引号,我添加了它们,并且我还冒昧地更改了在HTML中使用双引号的引号
请参阅。在imtest函数中,您只传递一个参数,单击一次,您接受两个参数。请检查它 在接受时,你应该这样写
document.getElementById('arrowback').innerHTML = '<a href="#" onclick="return imtest(' + icount + ', \"' + imname + '\"');"><img src="/Images/ib/A2.png"></a>';
document.getElementById('arrowback')。innerHTML='';
工作代码
Javascript
function imtest(icount, imname){
alert("icount:" + icount + "\n imname: " + imname);
}
function clicker(buildname,imname,icount){
var displaybox=document.getElementById('displaybox');
if(displaybox.style.display == "none"){
displaybox.style.display = "block";
document.getElementById('imagebox').innerHTML = "<img src='" + imname + icount+".jpg' height='400'>";
document.getElementById('arrowback').innerHTML = "<a onclick='return imtest(" + icount + "," + '"' + imname + '"' + ");'><img src='Images/ib/A2.png'></a>";
document.getElementById('btitle').innerHTML = buildname;
}else{
document.getElementById('displaybox').style.display = "none";
}
}
功能imtest(icount,imname){
警报(“icount:+icount+”\n imname:+imname);
}
功能点击器(buildname、imname、icount){
var displaybox=document.getElementById('displaybox');
如果(displaybox.style.display==“无”){
displaybox.style.display=“block”;
document.getElementById('imagebox')。innerHTML=“”;
document.getElementById('arrowback').innerHTML=“”;
document.getElementById('btitle')。innerHTML=buildname;
}否则{
document.getElementById('displaybox').style.display=“无”;
}
}
HTML
<div id="displaybox" style="display: none;">
<h1 id="btitle"></h1>
<div id="imagebox"></div>
<div id="arrowback"></div>
</div>
<button onclick="clicker('buildname', 'imname', 'icount');">Clicker</button>
点击器
查看赋值结果,而不是document.getElementById('arrowback')。innerHTML=''
-doconsole.log(“”;)
-然后查看您是否可以了解为什么需要控制台输出中的引号,因为当您输出它时,它会以HTML格式打印。比如说variname='abc'
。在您注入的HTML中,它现在是myFunction(abc)
。当对其求值时,它试图找到不存在的变量“abc”。虽然它周围有引号(myFunction(“abc”)
),但它现在有一个字符串作为参数。@jerska谢谢我尝试了上面的方法,但没有成功,仍然没有调用函数imtest,您确定引号的位置吗?@1dxb您能再次检查吗?我有一个额外的单引号。@Jerska做了更改,但它仍然顽固地拒绝调用函数imtest!谢谢,我将imtest函数改为使用2个参数,并对arrowback innerhtml行进行了更改,但是仍然没有调用imtest。请检查此。。(“+icount+”、“+imname+”);上面的方法不适用于imname,它适用于icount。imname是一个字符串变量,它是一个图像路径,您可以做更多的事情。var iCountValue=document.getElementById('arrowback')。innerHTML='';然后发出警报(iCountValue);使用新变量对iname执行同样的操作..不起作用的部分是onclick='return imtest(“+icount+”,“+imname+”),它没有调用imtest函数,调用该函数时会发出基本警报..不走运,它不起作用。帮助缩小范围;每当函数中包含变量imname(string)时,代码都会失败,但是数字形式的icount工作正常。我将alert(imname)代码放在函数clicker()的第一行,变量返回一个正常的字符串值。在这之后,似乎有什么东西阻止了该值被推送到innerHTML元素中。感谢您按照您的建议对arrowback innerHTML代码进行了更改,现在它工作得非常好!