试图将变量连接到img源,但忽略变量

时间:2012-01-28 17:15:32

标签: javascript this concatenation src

var tmp = "";

function putItem()
{
    this.innerHTML = "<img src = 'image/"+tmp+".png'>";
}

我还有 td 来调用此

<img src = 'images/wood.png' onclick = 'tmp = "wood";'>
<td onclick = "grid1 = tmp; checkEmpty(); putItem(this);">

我通过将"<img src = 'image/"+tmp+".png'>";作为一个变量来测试它,当我返回变量时tmp不是空字符串时它出现为"<img src = 'image/.png'>",即它忽略了tmp。

任何帮助?

我试图制作&#34; Minecraft(c)制作表&#34;用于Web开发项目

1 个答案:

答案 0 :(得分:2)

问题已更改。 现在似乎唯一的问题是您需要使用.call在{{this中设置putItem值1}}。

<img src = 'images/wood.png' onclick = 'tmp = "wood";'>
<td onclick = "grid1 = tmp; checkEmpty(); putItem.call(this);">


原始回答

我假设不是这个......

              <!--   v---- assign empty string to global grid1 variable -->
<td onclick = "grid1 = tmp; checkEmpty(); putItem(this);">

你想要这个......

          <!--     v---- assign "grid1" string to global tmp variable -->
<td onclick = "tmp = 'grid1'; checkEmpty(); putItem.call(this);">
          <!-- set the value of "this" in "putItem"---^  -->

现在您将"grid1"字符串分配给tmp变量,当您致电putItem()时,您正在使用.call设置其this价值。


那说,为什么不只是传递字符串?

而不是使用全局变量?
function putItem( str ) {
    this.innerHTML = "<img src = 'image/" + str + ".png'>";
}

<td onclick = "checkEmpty(); putItem.call(this, 'grid1');">