2013-03-22 64 views
2

我有一個Perl腳本打印出來的HTML頁面。我想使用JavaScript彈出警報消息。警報消息在perl變量中定義爲字符串。我試圖將perl變量值作爲參數傳遞給javascript函數,但它不起作用。請幫忙。如何將Perl變量傳遞給Javascript函數?

$perl_variable = "Welcome"; # alert msg 

print <<START 

<HTML> 

some html code.... 

<p>Click the button to wait 3 seconds, then alert "Hello".</p> 

<button onclick="myFunction('$perl_variable')">Try it</button> 

<script> 

function myFunction(var message){ 

setTimeout(function(){alert(message)},3000); 

} 

</script> 

</HTML> 

START 
+1

你是不是指'perl_variable'而不是'path_qa_image'?看看你的瀏覽器的錯誤控制檯;可能由於未引用變量而導致錯誤。 – 2013-03-22 19:16:54

+0

更正註釋 - 在perl變量中定義文件路徑以提醒消息 – Kevin 2013-03-22 19:17:26

+0

我編輯了您的問題以刪除對PERL的引用; [perl不是首字母縮寫詞](http://perldoc.perl.org/perlfaq1.html#What's-the-difference-between-%22perl%22-and-%22Perl%22%3f)。 – Quentin 2013-03-22 19:22:41

回答

5

注意:本答案的前半部分是指最初(在編輯之前)出現在問題中的代碼。

您需要:

  1. 使用正確的變量名
  2. 產生JavaScript字符串字面量(引述數據)

這樣的:

myFunction('$perl_variable') 

注意如果您的數據可能包含JavaScript字符串文本中不允許的字符(如新行) ),在字符串文字中具有特殊含義的字符(例如分隔它的引號)或者在HTML中具有特殊含義的字符(例如分隔屬性值的引號),那麼您還需要執行適當的轉義(分兩步,首先是JS,然後是HTML)。


順便說一句,在JS你的函數定義也是錯誤的:

function myFunction(var path){ 

var關鍵字可能無法在FormalParameterList使用。這應該是:

function myFunction(path){ 
+0

感謝Quentine ...我刪除了var關鍵字,它工作。 – Kevin 2013-03-22 19:24:33