繁体   English   中英

如何将其从PHP转换为JavaScript?

[英]How do I convert this to JavaScript from PHP?

如何从PHP使用Javascript / jQuery执行此操作? 我正在尝试从开始日期起最多提前6个月填充选择列表。

    $startDate =  intval( $c->getStartDate($pid) );
    $endDate =  strtotime('+6 month', $startDate);
    $dateSelectList = '<select name="dateSelect" id="dateSelect">';
    $count = 1;
    //populates the select list with the starting date of the course up to the next six months
    for($date = $startDate; $date <= $endDate ; $date = strtotime('+1 day', $date))
    {
        $dateSelectList .= '<option id="select'.$count.'" value="'.$date.'">'.date('D d F Y', $date).'</option>';
        $count++;
    }

    $dateSelectList .= '</select>';

做到这一点的一种方法是在jQuery中使用ajax。 因此,第一步是将代码修改为:

$startDate =  intval( $c->getStartDate($pid) );
$endDate =  strtotime('+6 month', $startDate);
$dateSelectList = '';
$count = 1;
//populates the select list with the starting date of the course up to the next six months
for($date = $startDate; $date <= $endDate ; $date = strtotime('+1 day', $date))
{
    $dateSelectList .= '<option id="select'.$count.'" value="'.$date.'">'.date('D d F Y', $date).'</option>';
    $count++;
}

echo $dataSelectList;

然后保存到一个单独的文件中,说populate.php

然后在html页面上编写以下代码。 代码假定您已将jquery包含到页面中,并且具有id = dateSelect的select元素

<script>
$(function(){
   $.get('populate.php',function(data)
   {
       $('#dateSelect').html(data);
   }
});
</script>

上面的代码在页面加载时调用populate.php,它将返回所有选项并将其注入到select元素中

这是我对您的代码的php-> javascript端口的尝试。 6个月期间的确切天数取决于该期间的开始和结束日期,因此,如果需要精确的6个月范围,则需要根据所涉及的每个月中的天数进行更多计算。 以下代码假设在6个月的时间范围内为182天。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
    </head>

    <script>
        function newOption(value, text) {
            var opt = document.createElement('option');
            opt.text = text;
            opt.value = value;
            return opt;
        }

        function formatDate(date) {
            var da = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],
                ma = ['January','February','March','April','May','June','July','August','September','October','November','December'], 
                dr = date.getDate(),
                wr = date.getDay(),
                mr = date.getMonth(),
                yr = date.getFullYear(),
                dn = da[wr],
                ds = (dr.toString().length == 1) ? '0' + dr.toString() : dr.toString(),
                mn = ma[mr],
                ys = yr.toString(),
                v = dn + ' ' + ds + ' ' + mn + ' ' + ys;

            return v;
        }

        function PopulateDateSelector(startDate, endDate, selector) {
            while(selector.length > 0) selector.remove(0);

            while(startDate < endDate) {
                selector.add(newOption(startDate.getTime().toString(), formatDate(startDate)));
                startDate.setTime(startDate.getTime() + (24*60*60*1000)); 
            }
        } 


    </script>
    <body>

        <select id="dateSelector"></select>

        <script type="text/javascript">             
            var s = document.getElementById('dateSelector'),
                startDate = new Date(),
                endDate = new Date(startDate.getTime() + (182*24*60*60*1000)); 
                //182 is estimated number of days in a 6 month period.

            PopulateDateSelector(startDate,endDate,s);
        </script>
    </body>
</html>

您搜索的或多或少应该是:

<html>
<head>
    <title>Demo Javascript populing select field</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" ></script>
    <script type="text/javascript" >
        $("document").ready(function(){
            nElement = 6;
            sList = {};
            for (i = 0; i<=nElement; i++) {
                var now = new Date();
                var nextDate = new Date();
                nextDate.setMonth(now.getMonth()+(i*6));
                var value = nextDate.getMonth()+"/"+nextDate.getFullYear();
                sList[value] = value;
            }


            $.each(sList, function(key, value){
                var option = $("<option></option>").attr("value",key).text(value);
                $("#demo-select").append(option);

            });
        });
    </script>
</head>
<body>
    <select name="demo-select" id="demo-select" ></select>
</body>

暂无
暂无

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

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