Javascript 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

我不熟悉编码,并且面临从innerhtml调用函数的问题。我怀疑问题可能与innerhtml语法有关。 有问题的部分是:

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=''
-do
console.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代码进行了更改,现在它工作得非常好!