我正在使用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);
出于同样的原因不能工作?
答案 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)