繁体   English   中英

需要帮助将函数的输出作为输入表单的值

[英]Need help getting the output of a function as the value of an input form

所以我试图创建一个表单,将下一个星期五的日期作为值发送。 该值应采用“YYYY-MM-DD”形式

这是我到目前为止所拥有的:

<input type="hidden" name="next_charge_scheduled_at" id="s1" value="" />
<script type="text/javascript">
 var elem = document.getElementById("s1");
elem.value = function()
{
var d = new Date();

switch (d.getDay())
{
case 0: d.setDate(d.getDate() + 5);
break;

case 1: d.setDate(d.getDate() + 4);
break;

case 2: d.setDate(d.getDate() + 3);
break;

case 3: d.setDate(d.getDate() + 2);
break;

case 4: d.setDate(d.getDate() + 1);
break;

case 6: d.setDate(d.getDate() + 6);
break;
}

return d;

};
</script>

但是,就我所见,这将返回整个函数,而不是结果。

我究竟做错了什么?

你已经绑定了一个函数到elem.value。如果你想把函数的结果放到elem.value,这样做:

<input type="hidden" name="next_charge_scheduled_at" id="s1" value="" />
<script type="text/javascript">
 var elem = document.getElementById("s1");
    elem.value=getDate();

    function getDate()
    {
    var d = new Date();

    switch (d.getDay())
    {
    case 0: d.setDate(d.getDate() + 5);
    break;

    case 1: d.setDate(d.getDate() + 4);
    break;

    case 2: d.setDate(d.getDate() + 3);
    break;

    case 3: d.setDate(d.getDate() + 2);
    break;

    case 4: d.setDate(d.getDate() + 1);
    break;

    case 5: d.setDate(d.getDate() + 7);
    break;

    case 6: d.setDate(d.getDate() + 6);
    break;
    }

    return `${d.getFullYear()}-${(d.getMonth() + 1) }-${d.getDate()}`;

    };

您需要创建一个函数,只有当我们像calculateFriday()那样执行函数时,我们才会得到我们将设置到输入字段的值!

 var elem = document.getElementById("s1"); elem.value = calculateFriday(); function calculateFriday() { var d = new Date(); switch (d.getDay()) { case 0: d.setDate(d.getDate() + 5); break; case 1: d.setDate(d.getDate() + 4); break; case 2: d.setDate(d.getDate() + 3); break; case 3: d.setDate(d.getDate() + 2); break; case 4: d.setDate(d.getDate() + 1); break; case 5: d.setDate(d.getDate() + 7); break; case 6: d.setDate(d.getDate() + 6); break; } return moment(d).format('YYYY-MM-DD');; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> <input type="text" tname="next_charge_scheduled_at" id="s1" value="" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM