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"但它不再起作用。所以它的正文中的脚本根本看不到这些变量。问题是如何从脚本中获取它们?

4

6 回答 6

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>
于 2012-05-31T19:59:51.927 回答
2

当浏览器不支持 javascript 时,解析 <script src=""></script> 之间的块。您需要另一个 <script> 块,并将其放入您的变量中。

于 2012-05-31T19:59:19.560 回答
1

它看不到全局变量,因为您在脚本标记中声明了源。您应该删除全局变量并在函数代码之前,在js页面中声明它们,然后像​​这样简单地包含页面:

<script src="/TestAppChanged/check.js" type="text/javascript"></script>
于 2012-05-31T19:58:47.717 回答
1

您应该有两个脚本标签。一为变量。然后是它下面的另一个,链接到您的 javascript 文件。

于 2012-05-31T19:58:53.207 回答
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>
于 2012-05-31T19:59:34.257 回答
1

不要在标签中混合 src 属性和代码。使用两个标签。

于 2012-05-31T20:00:23.560 回答