我想将一个变量从提示框传递回日期字符串

时间:2012-05-22 01:54:14

标签: javascript html

我想将一个变量从promt框传递回日期字符串。因此,如果一个人增加5天,那么日期将会增加5天。我是javascript的新手,这是我的第一个测试脚本,你可以在你的答案中列出我将阅读的所有资源。

<html>

 <head>
   <script type="text/javascript">
     var currentTime = new Date();
     var month = currentTime.getMonth() + 1;
     var day = currentTime.getDate();
     var year = currentTime.getFullYear();
     var dateString = "Today's Date " + month + "/" + day + "/" + year;
     function loadDate(){
       document.getElementById('dateSpan').innerHTML = dateString;
     }

   </script>

 </head>
 <body onload='loadDate()'>
   <form name=myform>
     <span id='dateSpan'></span><input type=button value="add days" onclick="var name=prompt('How many days do you want to add?','5 or 6')"/>
   </form>
 </body>

2 个答案:

答案 0 :(得分:0)

以下内容应该有所帮助。请注意,它不进行任何验证或检查(元素中的日期字符串是否正确?用户是否输入了数字?)因此您需要添加所有这些并处理错误。

function updateDate(el) {
  // get the text of the element
  var text = el.innerHTML;

  // Convert to a date object
  var b = text.split('-');
  var date = new Date(b[0], b[1] - 1, b[2]);

  // Ask for days to add
  var toAdd = prompt('How many days to add?');

  // Adjust date
  date.setDate(date.getDate() + Number(toAdd));

  // Write date to page
  el.innerHTML = date.getFullYear() + '-' + 
                 addZ(date.getMonth() + 1) + '-' +
                 addZ(date.getDate());

  // Helper just for this function
  function addZ(n) {
    return (n < 10? '0' : '') + n;
  }
}

以及一些相关的HTML:

<span id="dateSpan" onclick="updateDate(this)">2012-05-22</span>

另请注意,innerHTML也会获取所有HTML内容,但对于类似这样的内容,它应该没问题。如果您只需要文字,请根据支持的功能测试使用textContentinnerText

修改

添加了一段HTML以使其正常工作。请注意,日期是ISO8601简短形式:年 - 月 - 日。

答案 1 :(得分:0)

我会使用date.js lib。

这使日期更容易使用,并且也有很好的文档记录。

http://www.datejs.com/

然后,一旦您有了添加的天数,就可以轻松地提高日期。

//Assuming Xdays is a var with your number of days.
var today = Date.today();
var past = Date.today().add(-Xdays).days();
var future = Date.today().add(Xdays).days();

//format to a string
Date.today().toString("d-MMM-yyyy"); // 19-Nov-2007