无法将字符串传递给函数

时间:2013-10-21 22:49:38

标签: javascript jquery function

我正在使用javascript,我尝试将字符串传递给函数,就像这样

        //example string
        var f="a";

//add button that sends the value of f to the function
     document.getElementById("mydiv").innerHTML="<input type='button' id='myButton' value='Click here' onclick='gothere("+f+");'> ";

    function gothere(a){
    alert(a);
    }

我从未看到警报,在控制台中我看到a is not defined(我猜是指吗?)

如果我将f var设置为数字,那么我会看到警报。

我错过了什么?

提前致谢

修改

我想的可能是

var buttonnode= document.createElement('input');

document.getElementById("mydiv").appendChild(buttonnode);
buttonnode.onclick=gothere(f);

出于同样的原因不能工作?

5 个答案:

答案 0 :(得分:3)

实际上,您的代码中没有a。您使用变量f来表示a。所以使用它可以帮助你:

var f="a";
// write the remains of the code as they are..

function gothere(f) {
  alert(f);
}

现在,当您调用该函数时,浏览器中会出现a的警告。

另外,尝试将内容包装在"" double qoutes中,让代码理解这是一个字符串而不是一个字符。

对于onclick使用

onclick='gothere(" + f + ")'

而现在,它就是你写的价值。也许这个问题是因为你没有写f的价值。

尝试检查错误。我相信没有任何东西。

或者尝试使用属性字段并使用jQuery更改它。

答案 1 :(得分:3)

当你的HTML被渲染时,你得到onclick='gothere(a);',但实际的a变量在这个上下文中不存在,你想要传递f的值,作为一个字符串,所以你'我需要使用onclick='gothere(\""+f+"\");'。注意parens内的额外报价。这将呈现给onclick='gothere("a");',从而传递字符串。

使用数字时,它有效,因为调用onclick='gothere(5);'是有效的,因为变量不能命名为5,并且它传递了数字。

答案 2 :(得分:1)

修复代码怎么样?您缺少变量F表示的值周围的引号。 因此,当解析变量F时,函数变为gothere(a)。虽然a不是定义的变量(但它是一个值),因此也就是错误。

试试这个!

document.getElementById("mydiv").innerHTML="<input type='button' id='myButton' value='Click here' onclick='gothere(\""+f+"\");'> ";

修改后的部分为onclick='gothere(\""+f+"\");'> "

这对你有用!

答案 3 :(得分:1)

函数参数字符串值图像动态来自JSON 。由于item.product_image2是一个URL字符串,因此在调用参数中的changeImage时需要将其放在引号中。

My Function Onclick inside pass参数。

items+='<img src='+item.product_image1+' id="saleDetailDivGetImg">';
items+="<img src="+item.product_image2+"  onclick='changeImage(\""+item.product_image2+"\");'>";

我的功能

<script type="text/javascript">
function changeImage(img)
 {
    document.getElementById("saleDetailDivGetImg").src=img;
    alert(img);
}
</script>

答案 4 :(得分:0)

  1. 您需要对值参数使用单引号(请参阅@Nis或@CDspace答案)。
  2. 处理动态点击或其他事件的更好方法是事件绑定。例如,请参阅jQuery事件绑定。