Jonny Sooter
Jonny Sooter

Reputation: 2417

Add a colspan to a JS generated cell

I have some JavaScript that creates a row in a table and adds cells to it. I need to put an colspan=2 on the second cell added (A.K.A the select cell), but I can't figure out the best way to do this with the least change in the code because this affects a entire page of more code. Suggestions? (table id=table5 class=mytable)

    if(fltgrid)
{
    var fltrow = t.insertRow(0); //adds filter row
    fltrow.className = "fltrow";
    for(var i=0; i<n; i++)// this loop adds filters
    {
        var fltcell = fltrow.insertCell(i);
        //fltcell.noWrap = true;
        i==n-1 && displayBtn==true ? inpclass = "flt_s" : inpclass = "flt";

        if(f==undefined || f["col_"+i]==undefined || f["col_"+i]=="none") 
        {
            var inptype;
            (f==undefined || f["col_"+i]==undefined) ? inptype="text" : inptype="hidden";//show/hide input  
            var inp = createElm( "input",["id","flt"+i+"_"+id],["type",inptype],["class",inpclass] );                   
            inp.className = inpclass;// for ie<=6
            fltcell.appendChild(inp);
            if(enterkey) inp.onkeypress = DetectKey;
        }
        else if(f["col_"+i]=="select")
        {
            var slc = createElm( "select",["id","flt"+i+"_"+id],["class",inpclass] );
            slc.className = inpclass;// for ie<=6
            fltcell.appendChild(slc);
            PopulateOptions(id,i);
            if(displayPaging)//stores arguments for GroupByPage() fn
            {
                var args = new Array();
                args.push(id); args.push(i); args.push(n);
                args.push(display_allText); args.push(sort_slc); args.push(displayPaging);
                SlcArgs.push(args);
            }
            if(enterkey) slc.onkeypress = DetectKey;
            if(on_slcChange) 
            {
                (!modfilter_fn) ? slc.onchange = function(){ Filter(id); } : slc.onchange = f["mod_filter_fn"];
            } 
        }

        if(i==n-1 && displayBtn==true)// this adds button
        {
            var btn = createElm(
                                    "input",
                                    ["id","btn"+i+"_"+id],["type","button"],
                                    ["value",btntext],["class","btnflt"] 
                                );
            btn.className = "btnflt";

            fltcell.appendChild(btn);
            (!modfilter_fn) ? btn.onclick = function(){ Filter(id); } : btn.onclick = f["mod_filter_fn"];                   
        }//if       

    }// for i       
}//if fltgrid

Upvotes: 2

Views: 2923

Answers (1)

jmoerdyk
jmoerdyk

Reputation: 5506

If I understand you correctly, you can change the code block in the else if to the following:

var slc = createElm( "select",["id","flt"+i+"_"+id],["class",inpclass] );
slc.className = inpclass;// for ie<=6
fltcell.appendChild(slc);
fltcell.setAttribute("colspan",2);
PopulateOptions(id,i);

Upvotes: 2

Related Questions