【问题标题】:Passing a JSP value to a javascript将 JSP 值传递给 javascript
【发布时间】:2014-01-17 01:10:06
【问题描述】:

我有这个脚本

<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 来显示数据库中的数据,它也显示了。 但是当我将它传递给这行代码中的值字段时

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

数据没有出现。我做错了吗?
即使我硬编码并在它不显示的值中写了一些东西。
我也尝试过直接使用 JSP 传递,但这也不起作用。

【问题讨论】:

    标签: javascript jquery html mysql jsp


    【解决方案1】:
    html('<div><label style="float:left;">'+yo+'</label></div>
         <textarea name="textbox'+ counter  +'" id="textbox'+counter+ '">
          data'+data+'</textarea>');
    

    【讨论】:

    • 我也忘了提到我无法在里面传递的freq变量。我想传递它而不是30。但是它不起作用。
    • 尝试使用parseInt(freq);
    • 好的,我会尝试..但我可以在 javascript 中使用它吗?我不这么认为..我猜必须使用jsp
    • 您只想传递freqyo.getMinutes() 之和,parseInt(freq) 会将freq 值(字符串)转换为整数,然后可以进行加法。
    • 如何使用 jsp 传递它?你知道吗?&lt;textarea name="textbox' + counter + '" id="textbox' + counter + '" &gt;'&lt;%=data%&gt;'&lt;/textarea&gt;');这不正确吗?因为当我说 system.out 数据时,我在控制台中得到了值。
    【解决方案2】:

    试试这样的

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

    【讨论】:

      【解决方案3】:

      我认为不是这个:

      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 推送到您的目标元素之后。

      documentation @jQuery for .after()

      说明在匹配元素集中的每个元素之后插入由参数指定的内容。

      【讨论】:

      • 现在看来您的问题出在此处:+ '"&gt;data'+data+'"&lt;/textarea&gt;');
      • 你知道jsp吗?
      【解决方案4】:

      当我硬编码并向

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

      我得到了我输入的内容。所以它很可能与数据有关。

      你也可以在你的“if”条件中添加一个调试警报,看看你是否到达了有错误的代码。

      【讨论】:

        猜你喜欢
        • 2014-01-07
        • 1970-01-01
        • 2011-08-07
        • 2016-08-19
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多