2013-10-21 45 views
3

我使用的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 I猜测?)

如果我将F var是一个号码,然后我看到了警报。

我错过了什么?

在此先感谢

编辑

我想也许像

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

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

出于同样的原因无法正常工作?

回答

3

当你的HTML GET呈现的,你得到onclick='gothere(a);',但实际a变量没有在这方面存在着,你想传递f的值,作为字符串,所以你需要使用onclick='gothere(\""+f+"\");'。请注意附件中的额外引号。这将渲染到onclick='gothere("a");',从而传递字符串。

当使用一个数字时,它可以工作,因为调用onclick='gothere(5);'是有效的,因为一个变量不能被命名为5,并且它传递了该数字。

+0

谢谢,你是对的。我只是编辑我的问题,如果你不介意检查... – user2860857

3

其实,你不必在你的代码的a。您正在使用变量f来表示a。因此,使用这将有助于您:

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

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

现在,当你调用该函数,将有a在浏览器的警报。

另外,尽量在包裹双""的qoutes内容,让代码明白,这是一个字符串不是一个字符。

对于使用onclick

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

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

尝试检测错误。我相信不会有任何东西。

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

1

如何修复您的代码?您错过了变量F表示的值附近的引号。 因此,当分析变量F时,函数变为gothere(a)。而a不是一个定义的变量(但它的一个值),因此也是错误。

试试这个!

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

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

这应该为你工作!

+0

谢谢,你是对的。我只是编辑我的问题,如果你不介意检查... – user2860857

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

函数参数字符串值图像从JSON动态。由于item.product_image2是一个URL字符串,所以当您在参数中调用changeImage时,需要将其放在引号中。

我的函数Onclick里面传递参数。

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>