如何将其从PHP转换为JavaScript

How do I convert this to JavaScript from PHP?

本文关键字:转换 JavaScript PHP      更新时间:2023-09-26

如何在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>';

实现这一点的一种方法是将ajax与jQuery结合使用。所以第一步是将您的代码修改为:

$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,它返回所有选项并将其注入到选择元素

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

<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>

以下是我对代码的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>