2012-05-31 140 views
0

我有一個JS訪問變量

function check(obj) { 

for(i=0; i<obj.elements.length; i++){ 
    if(obj.elements[i].type=="checkbox"&&obj.elements[i].checked){ 
     if(confirm(onSubmitMessage)){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
} 
alert(alertMessage); 
return false; 
} 

這是一個從JSP頁面調用是這樣的:

<script src="/TestAppChanged/check.js" type="text/javascript"> 
    var onSubmitMessage = '"<bean:message key="body.onsubmit.delete"/>"'; 
    var alertMessage = '"<bean:message key="body.alert.delete"/>"'; 
</script> 
... 
<form action="MyAction" method="POST" 
onsubmit="return check(this)"> 

的問題是,它並沒有看到這些glabal變量:onSubmitMessagealertMessage。我認爲問題是,這些東西的設置方式,並改變它的值通常串像"qwe"但它沒有再工作。所以它的身體腳本根本不會看到這些變量。問題是如何從腳本中獲取它們?

回答

3

<script>標籤使用,也可以加載外部文件,像<script src="path/to/file.js"></script>或定義JS代碼,在標籤內,如:

<script type="text/javascript"> 
    // Your JS code. 
</script> 

你不能兼得在同一個標​​簽上。因此,拆分代碼:

<script src="/TestAppChanged/check.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    var onSubmitMessage = '"<bean:message key="body.onsubmit.delete"/>"'; 
    var alertMessage = '"<bean:message key="body.alert.delete"/>"'; 
</script> 
+1

我認爲你的意思是「你不能同時在兩個標籤上」......) – Andre

+0

謝謝!這現在起作用。 – And

+0

@你是對的。編輯。 – romaintaz

-2

對不起,應該是這樣的

<script src="/TestAppChanged/check.js" type="text/javascript"/> 
<script> 
     var onSubmitMessage = '"<bean:message key="body.onsubmit.delete"/>"'; 
     var alertMessage = '"<bean:message key="body.alert.delete"/>"'; 

    function check(obj) { 

    for(i=0; i<obj.elements.length; i++){ 
     if(obj.elements[i].type=="checkbox"&&obj.elements[i].checked){ 
      if(confirm(onSubmitMessage)){ 
       return true; 
      } 
      else{ 
       return false; 
      } 
     } 
    } 
    alert(alertMessage); 
    return false; 
    } 
    </script> 

<form action="MyAction" method="POST" 
onsubmit="return check(this)"> // assuming check is above check(obj). If its in .js file, remove the method from the <script></script>. 
1

它沒有看到globar變中,因爲你在聲明script標籤的來源。 您應該刪除全局變量和函數的代碼之前聲明它們,在JS頁面,然後簡單地包括這樣的頁面:

<script src="/TestAppChanged/check.js" type="text/javascript"></script> 
1

你應該有兩個腳本標記。一個用於變量。然後在它下面的另一個鏈接到您的JavaScript文件。

2

< script/src =「」> </script>當瀏覽器不支持javascript時解析。你需要另一個<腳本>塊,並把這個變量。

1

可以在標籤設置的內容或設置src屬性。 它應該是:

<script type="text/javascript"> 
    var onSubmitMessage = '"<bean:message key="body.onsubmit.delete"/>"'; 
    var alertMessage = '"<bean:message key="body.alert.delete"/>"'; 
</script> 
<script src="/TestAppChanged/check.js" type="text/javascript"></script> 
1

不要混合標籤內的src屬性和代碼。使用兩個標籤。