Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Javascript在html表格单元格中插入选择框_Javascript_Html_Dom - Fatal编程技术网

通过Javascript在html表格单元格中插入选择框

通过Javascript在html表格单元格中插入选择框,javascript,html,dom,Javascript,Html,Dom,我试图使用table用Javascript生成一个网格类型的工作表,但是selectbox并没有显示在所有单元格中,而是只显示在最后一个单元格中。为什么? 这是我的工作代码: /** * @param {int} The month number, 0 based * @param {int} The year, not zero based, required to account for leap years * @return {Date[]} List w

我试图使用table用Javascript生成一个网格类型的工作表,但是selectbox并没有显示在所有单元格中,而是只显示在最后一个单元格中。为什么? 这是我的工作代码:

 /**
     * @param {int} The month number, 0 based
     * @param {int} The year, not zero based, required to account for leap years
     * @return {Date[]} List with date objects for each day of the month
     */
    function getDaysInMonth(month, year) {
         // Since no month has fewer than 28 days
         var date = new Date(year, month, 1);
         var days = [];
         console.log('month', month, 'date.getMonth()', date.getMonth())
         while (date.getMonth() === month) {
            days.push(new Date(date));
            date.setDate(date.getDate() + 1);
         }
         return days;
    }



//console.log(getDaysInMonth(4, 2012));

var days = getDaysInMonth(0,2016);
var feb = getDaysInMonth(1,2016);
var mar = getDaysInMonth(2,2016);
var apr = getDaysInMonth(3,2016);
var may = getDaysInMonth(4,2016);
var jun = getDaysInMonth(5,2016);
var jul = getDaysInMonth(6,2016);
var aug = getDaysInMonth(7,2016);
var sep = getDaysInMonth(8,2016);
var oct = getDaysInMonth(9,2016);
var nov = getDaysInMonth(10,2016);
var dec = getDaysInMonth(11,2016);

var str="";
var feb_str="";
var mar_str="";
var apr_str="";
var may_str="";
var jun_str="";
var jul_str="";
var aug_str="";
var sep_str="";
var oct_str="";
var nov_str="";
var dec_str="";


//console.log(days.length+"ffffffffffffffff");

for( i=0;i<days.length;i++){
str = str+days[i];
}

for( i=0;i<feb.length;i++){
feb_str = feb_str+feb[i];
}

for( i=0;i<mar.length;i++){
mar_str = mar_str+mar[i];
}

for( i=0;i<apr.length;i++){
apr_str = apr_str+apr[i];
}

for( i=0;i<may.length;i++){
may_str = may_str+may[i];
}

for( i=0;i<jun.length;i++){
jun_str = jun_str+jun[i];
}

for( i=0;i<jul.length;i++){
jul_str = jul_str+jul[i];
}

for( i=0;i<aug.length;i++){
aug_str = aug_str+aug[i];
}

for( i=0;i<sep.length;i++){
sep_str = sep_str+sep[i];
}

for( i=0;i<oct.length;i++){
oct_str = oct_str+oct[i];
}

for( i=0;i<nov.length;i++){
nov_str = nov_str+nov[i];
}

for( i=0;i<dec.length;i++){
dec_str = dec_str+dec[i];
}

/*
Tue May 01 2012 
*/


//console.log("string is"+str+"....end");

var myRe = /\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/;
/*

var res = str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var feb_res = feb_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var mar_res = mar_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var apr_res = apr_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var may_res = may_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var jun_res = jun_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var jul_res = jul_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var aug_res = aug_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var sep_res = sep_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var oct_res = oct_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var nov_res = nov_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var dec_res = dec_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);

*/

var res = str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var feb_res = feb_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var mar_res = mar_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var apr_res = apr_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var may_res = may_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var jun_res = jun_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var jul_res = jul_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var aug_res = aug_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var sep_res = sep_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var oct_res = oct_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var nov_res = nov_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);
var dec_res = dec_str.match(/\w\w\w\s\w\w\w\s\d\d\s\d\d\d\d/g);

console.log(res);
console.log(feb_res);
console.log(mar_res);
console.log(apr_res);
console.log(may_res);
console.log(jun_res);
console.log(jul_res);
console.log(aug_res);
console.log(sep_res);
console.log(oct_res);
console.log(nov_res);
console.log(dec_res);


**function GenerateTable(param_days) {

    //Create a HTML Table element.
    var table = document.createElement("TABLE");
    table.border = "1";

    //Get the count of columns.
    var columnCount = param_days.length;
    console.log("+++++++++"+param_days.length+"++++++++++");



   //Add the header row.
    var row = table.insertRow(-1);
    for (var i = 0; i < columnCount; i++) {
        var headerCell = document.createElement("TH");
        headerCell.innerHTML = param_days[i];
        row.appendChild(headerCell);
    }
row = table.insertRow(-1);


   //Create array of options to be added
   var array = ["Volvo","Saab","Mercades","Audi"];

if( param_days == feb_res)    {   var dvTable = document.getElementById("febdvTable");}

else if(param_days == mar_res){   var dvTable = document.getElementById("mardvTable");}

else if(param_days == apr_res){   var dvTable = document.getElementById("aprdvTable");}

else if(param_days == may_res){   var dvTable = document.getElementById("maydvTable");}

else if(param_days == jun_res){   var dvTable = document.getElementById("jundvTable");}

else if(param_days == jul_res){   var dvTable = document.getElementById("juldvTable");}

else if(param_days == aug_res){   var dvTable = document.getElementById("augdvTable");}

else if(param_days == sep_res){   var dvTable = document.getElementById("sepdvTable");}

else if(param_days == oct_res){   var dvTable = document.getElementById("octdvTable");}

else if(param_days == nov_res){   var dvTable = document.getElementById("novdvTable");}

else if(param_days == dec_res){   var dvTable = document.getElementById("decdvTable");}

else  {  var dvTable = document.getElementById("dvTable"); }

    //dvTable.innerHTML = "";
    dvTable.appendChild(table);


  //Create and append select list
   var selectList = document.createElement("select");
   selectList.setAttribute("id", "mySelect");
   //dvTable.appendChild(selectList);

   for (var i = 0; i < array.length; i++) {
   var option = document.createElement("option");
   option.setAttribute("value", array[i]);
   option.text = array[i];
   selectList.appendChild(option);
   }

  //Add the data rows.
    for (var i = 0; i < param_days.length; i++) {

        var cell = row.insertCell();
        cell.appendChild(selectList);

        }



}

GenerateTable(res);
GenerateTable(feb_res);
GenerateTable(mar_res);
GenerateTable(apr_res);
GenerateTable(may_res);
GenerateTable(jun_res);
GenerateTable(jul_res);
GenerateTable(aug_res);
GenerateTable(sep_res);
GenerateTable(oct_res);
GenerateTable(nov_res);
GenerateTable(dec_res);
/**
*@param{int}月数,以0为基础
*@param{int}需要说明闰年的年份,不是以零为基础的
*@return{Date[]}列表,其中包含每月每一天的日期对象
*/
函数getDaysInMonth(月,年){
//因为每个月都不少于28天
var日期=新日期(年、月、1);
风险值天数=[];
log('month',month',date.getMonth()',date.getMonth())
while(date.getMonth()==月){
推送(新日期(日期));
date.setDate(date.getDate()+1);
}
返程天数;
}
//console.log(getDaysInMonth(2012年4月));
var天数=getDaysInMonth(02016);
var feb=getDaysInMonth(12016);
var mar=getDaysInMonth(22016);
var apr=getDaysInMonth(32016);
var may=getDaysInMonth(42016);
var jun=getDaysInMonth(52016);
var jul=getDaysInMonth(62016);
var aug=getDaysInMonth(72016);
var sep=每月的getDaysInMonth(82016);
var oct=getDaysInMonth(92016);
var nov=getDaysInMonth(102016);
var dec=getDaysInMonth(112016);
var str=“”;
var feb_str=“”;
var mar_str=“”;
var apr_str=“”;
var may_str=“”;
var jun_str=“”;
var jul_str=“”;
var aug_str=“”;
var sep_str=“”;
var oct_str=“”;
var nov_str=“”;
var dec_str=“”;
//console.log(days.length+“ffffffffffffffff”);

对于(i=0;i我没有在代码中准确地找到错误,但是下面的部分希望能有所帮助

    var getDays = function getDays( month, year ) {
            var days = [],
                limit = new Date(year, month, 0).getDate(),
                i;
            for (i = 1; i <= limit; i += 1) {
                days.push(new Date(year, (month - 1), i).toDateString());
            }
            return days;
        },
        getYearInDays = function getYearInDays( year ) {
            var years = [],
                i;
            for (i = 1; i <= 12; i += 1) {
                years.push(getDays(i, year));
            }
            return years;
        },
        generateTable = function generateTable( days, monthName ) {
            var tag = function tag(tagName) {
                    return document.createElement(tagName);
                },
                table = tag('table'),
                row,
                cell,
                select = tag('select'),
                option;
            // header
            row = tag('tr');
            cell = tag('th');
            cell.textContent = monthName;
            row.appendChild(cell);
            table.appendChild(row);
            row = tag('tr');
            cell = tag('td');
            // select
            days.forEach(function (day) {
                option = tag('option');
                option.setAttribute('value', day);
                option.textContent = day;
                select.appendChild(option);
            });
            cell.appendChild(select);
            row.appendChild(cell);
            table.appendChild(row);
            return table;
        },
        monthNames = ['January', 'february', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
        dayAry = getYearInDays('2016'),
        fragment = document.createDocumentFragment();
    dayAry.forEach(function (days, index) {
        var table = generateTable(days, monthNames[index]);
        fragment.appendChild(table);
    });
    document.querySelector('#dayTables').appendChild(fragment);
var getDays=函数getDays(月、年){
var天数=[],
限制=新日期(年、月、0)。getDate(),
我

对于(i=1;i我认为您正在尝试在循环中附加一行代码的相同DOM元素

 cell.appendChild(selectList);
我建议在循环中创建selectList

for (var i = 0; i < param_days.length; i++) {

   var selectList = document.createElement("select");
   selectList.setAttribute("id", "mySelect"+i);

   for (var j = 0; j < array.length; j++) {
     var option = document.createElement("option");
     option.setAttribute("value", array[j]);
     option.text = array[j];
     selectList.appendChild(option);
   }
   var cell = row.insertCell();
   cell.appendChild(selectList);

}
for(变量i=0;i
正则表达式不适用于我。它应该做什么?@Shilly它只会获取拆分日期并将其放入格式中。正则表达式执行后的示例:0:“2016年12月1日星期四”1:“2016年12月2日星期五”2:“2016年12月3日星期六”3:“2016年12月4日太阳”4:“2016年12月5日星期一”5:“2016年12月6日星期三”7:“2016年12月8:“2016年12月9日星期五”9:“2016年12月10日星期六”10:“2016年12月11日星期日”11:“2016年12月12日星期一”“我现在无法更改完整的代码。很不幸,答案必须与代码Postedaw关联。我无法让您的正则表达式正常工作,所以请检查并检查您的月数。我建议至少使用该部分来生成日期名称。toDateSting()比整个正则表达式更简单。”。
 cell.appendChild(selectList);
for (var i = 0; i < param_days.length; i++) {

   var selectList = document.createElement("select");
   selectList.setAttribute("id", "mySelect"+i);

   for (var j = 0; j < array.length; j++) {
     var option = document.createElement("option");
     option.setAttribute("value", array[j]);
     option.text = array[j];
     selectList.appendChild(option);
   }
   var cell = row.insertCell();
   cell.appendChild(selectList);

}