簡體   English   中英

如何通過jsp表達式標簽將java字符串變量傳遞給javascript函數?

[英]How to pass java string variable to the javascript function by jsp expression tag?

我想使用jsp表達式標簽將java字符串變量傳遞給javascript函數參數。以下是我的jsp頁面。

First.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>
        <script>
            function stringGenerate(str){
                var x = document.getElementsByTagName("input");
                x[0].value = str;
            }
            function numberGenerate(num){
                var x = document.getElementsByTagName("input");
                x[1].value = num;
            }
        </script>
    </head>
    <body>
        <%
            String num ="1234567890";
            String str = "abcdefghij";
        %>

        <input type="text" name="string" readonly="readonly"/> &nbsp;&nbsp;
        <input type="text" name="number" readonly="readonly"/><br/><br/>

        <input type="button" value="String Generate" onclick= "stringGenerate(<%=str %>)" /> &nbsp;&nbsp;
        <input type="button" value="Number Generate" onclick= "numberGenerate(<%=num %>)" />
    </body>
</html>

當我單擊具有“數字生成”值的按鈕時,則文本變量(name =“ number”)上將顯示num變量值(1234567890),但是當我單擊具有值“字符串生成”的按鈕時,則有在相應的文本框(名稱=“ string”)上沒有任何顯示。這里num和str都是字符串類型的變量,但是為什么在文本框中僅顯示num變量值,為什么不顯示str變量值?

原因是當頁面由瀏覽器呈現時,它將str和num值直接放入代碼中,因此如下所示:

<input type="button" value="String Generate" onclick="stringGenerate(abcdefghij)"/>

瀏覽器基本上認為您正在嘗試引用一個名為'abcdefghij'的Javascript變量。

您應該在字符串文本之前和之后添加' chars,以使javascript知道它應該使用該文本的值,而不是搜索具有該名稱的變量。

str的聲明應如下所示以使其起作用:

String str = "\'abcdefghij\'";

請注意 ,您不能使用\\"進行轉義,因為這會破壞您的代碼。

在HTML中使用字符串時,請嘗試使用單引號'

onclick= "stringGenerate('<%=str %>')"
                         ^        ^

完整代碼:

<input type="button" value="String Generate" onclick= "stringGenerate('<%=str %>')" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM