2013-10-21 86 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>