簡體   English   中英

將JSP值傳遞給JavaScript

[英]Passing a JSP value to a javascript

我有這個劇本

<script type="text/javascript">
$(document).ready(function(){   
    var data=$('#data').val();
    var counter = 1;
    var d=new Date();
    var i;
    var newdate= new Array();
    newdate=$('#newdate').val();
   newdate= newdate.replace("[", "").replace("]", "");
   var newdate1=newdate.split(",");
    var a=newdate1[0];
    var b=newdate1[1];
    var c=newdate1[2];
    var dateString=$('#strtime').val();
    var dateString2=$('#endtime').val();
    var dateString1=$('#date').val();

    var d1 = new Date(dateString1+" "+dateString);
    var d5= new Date(dateString1+" "+dateString2);
    alert(d5);
    var yo=d1;
    var d3=new Date(dateString1+" "+a);
    var d4=new Date(dateString1+" "+b);
    setInterval(function() {
    if(yo.getTime() <= d.getTime()){//compare current time and add half n hour to the db time variable and create a new textbox  
    if(yo.getTime() <= d5.getTime()){
        //alert("hello");
    if( (d1.getTime() == d3.getTime()) || (d1.getTime() == d4.getTime())){
    var freq=$('#freq').val();
    var newTextBoxDiv = $(document.createElement('div')).attr("id", 'TextBoxDiv' + counter);

//the problem lies here
    newTextBoxDiv.after().html('<div><label style="float:left;">'+yo+'</label></div><textarea name="textbox' + counter + '" id="textbox' + counter + '" value="data'+data+'"/>');
    newTextBoxDiv.appendTo("#TextBoxesGroup");
    yo.setMinutes(yo.getMinutes() + 30);
        }
    }
    },1000);
 });
</script>

html code
<input type="hidden" id="data" name="data" value="<%=rsta.getString("data");%>"/>

該腳本會根據時間添加文本框,在這種情況下,每半小時添加一次。

我從數據庫中獲取一些數據,將其傳遞給隱藏字段,然后獲取腳本中的值。
我在腳本中使用了Alert來顯示數據庫中的數據,它也會顯示。 但是當我將其傳遞給此代碼行中的value字段時

newTextBoxDiv.after().html('<div><label style="float:left;">'+yo
                           +'</label></div><textarea name="textbox' + counter 
                           + '" id="textbox' + counter 
                           + '" value=""/>'); 

數據沒有出現。 難道我做錯了什么?
即使我硬編碼並用該值編寫某些內容,它也不會顯示。
我也嘗試過直接使用JSP進行傳遞,但這也不起作用。

我認為除了:

var newTextBoxDiv = $(document.createElement('div'))
                    .attr("id", 'TextBoxDiv' + counter);

試試這個:

var newTextBoxDiv = $('<div/>').attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after('<div><label style="float:left;">...all other code');

所以對我來說,這段代碼應該像這樣:

var newTextBoxDiv = $('<div/>').attr("id", 'TextBoxDiv' + counter);

//the problem lies here
newTextBoxDiv.after('<div><label style="float:left;">'+yo
                    +'</label></div><textarea name="textbox' + counter 
                    + '" id="textbox' + counter 
                    + '">data'+data+'"</textarea>'); //<---see this here
newTextBoxDiv.appendTo("#TextBoxesGroup");
yo.setMinutes(yo.getMinutes() + 30);

即使您不必調用.html()也可以在.after()方法中傳遞所有html,這會將html推送到目標元素之后。

.after()的文檔@jQuery

描述在匹配元素集中的每個元素之后插入由參數指定的內容。

html('<div><label style="float:left;">'+yo+'</label></div>
     <textarea name="textbox'+ counter  +'" id="textbox'+counter+ '">
      data'+data+'</textarea>');

嘗試這樣的事情

newTextBoxDiv.after().html('<div><label style="float:left;">'+yo+'</label></div><textarea name="textbox' + counter + '" id="textbox' + counter + '" >data'+data+'</textarea>');

當我進行硬編碼並發出警報時,您得到的“數據”是什么

'<div><label style="float:left;">'+yo+'</label></div> <textarea name="textbox'+ counter +'" id="textbox'+counter+ '"> data'+data+'</textarea>'

我得到了投入。因此,很可能與數據有關。

您也可以只在“ if”條件內放置調試警報,看看您是否正在到達有錯誤的代碼。

暫無
暫無

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

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