2017-02-02 4 views
0

私は水平にスクロールできるテーブルを作成したいと思います。列の数は動的です。テーブルを水平にスクロールするときに、最初の列を固定/固定する必要があります。私は次のCSSを試しました。最初の列は固定されていますが、2番目と3番目の列は固定列の下に隠れています。これを解決する方法を提案してください。ありがとうアドバンテージ。最初の列がHTML/CSSを使用して固定されたテーブルを作成するには?

.mydiv { 
     overflow-y: scroll; 
    }.headcol { 
    position:absolute; 
    width: 100px; 
    text-align:center; 
    background-color: #4CAF50; 
    color: white; 
    font-family:arial; 
    font-size:13px; 
    padding-left:15px; 
    padding-right:15px; 
    padding-top:10px; 
    padding-bottom:10px; 
    border: 1px solid #c4c0c0; 
} 

.tablemy { 
    border-collapse: collapse; 
    border: 1px solid #c4c0c0; 
} 

.thmy { 
    text-align:center; 
    background-color: #4CAF50; 
    color: white; 
    font-family:arial; 
    font-size:13px; 
    padding-left:15px; 
    padding-right:15px; 
    padding-top:10px; 
    padding-bottom:10px; 
    border: 1px solid #c4c0c0; 
} 

.tdmy { 
    white-space: nowrap; 
    padding:8px; border-left:1px solid #ccc; border-top:1px solid #ccc; 
    padding-left:15px; 
    padding-right:15px; 
    padding-top:10px; 
    padding-bottom:10px; 
    font-size:12px; 
    font-family:arial; 
    border: 1px solid #c4c0c0; 
    color:#585858; 
} 
.trmy:nth-child(odd) { 
    background-color:#F5F5F5; 
} 
tr:nth-child(even) { 
    background-color:#ffffff; 
} 

そして、私のテーブル私はJavaScriptで私のテーブルを作成してい enter image description here

です。

私はあなたが .tablemyのために(最初の列の幅に等しい) padding-left: 130px;を設定する必要が第一列に position: fixedを設定し、他のすべての列が表示されるように必要があると思う
$(window).load(function(){ 
var customers = new Array(); 
customers.push(["TN04 AH 0253", "55"]); 
customers.push(["TN04 AF 8830", "67"]); 
customers.push(["TN37 CM 1249", "33"]); 
customers.push(["TN19 F 9175", "47"]); 
customers.push(["TN37CM 1932", "0"]); 

var date = new Date(); 
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1); 
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); 

var dateArray = getDates(firstDay, lastDay); 

// Create a HTML Table element. 
var table = document.createElement("TABLE"); 
table.setAttribute('class', 'tablemy'); 
table.border = "1"; 

// Get the count of columns. 
var columnCount = customers[0].length; 

var row = table.insertRow(-1); 
for (var i = 0; i < dateArray.length; i++) { 
    var headerCell = document.createElement("TH"); 
    if (i === 0) { 
     headerCell.setAttribute('class', 'headcol'); 
    } else { 
     headerCell.setAttribute('class', 'thmy'); 
    } 
    //headerCell.setAttribute('class', 'thmy'); 
    headerCell.innerHTML = dateArray[i]; 
    row.appendChild(headerCell); 
} 

// Add the data rows. 
for (var i = 0; i < customers.length; i++) { 
    row = table.insertRow(-1); 
    row.setAttribute('class', 'trmy'); 
    for (var j = 0; j < columnCount; j++) { 
     var cell = row.insertCell(-1); 
     if (j === 0) { 
      cell.setAttribute('class', 'headcol'); 
     } else { 
      cell.setAttribute('class', 'tdmy'); 
     } 
     //cell.setAttribute('class', 'tdmy'); 
     cell.innerHTML = customers[i][j]; 
    } 
} 

var dvTable = document.getElementById("dvTable"); 
dvTable.innerHTML = ""; 
dvTable.appendChild(table); 
}) 
function getDates(date1, date2) { 
var day = 1000 * 60 * 60 * 24; 
var diff = (date2.getTime() - date1.getTime())/day; 
var dateArray = new Array(); 
dateArray.push("Unit/Count"); 
for(var i=0; i<=diff; i++) 
{ 
    var xx = date1.getTime() + day * i; 
    var yy = new Date(xx); 

    var strDate = yy.getDate() + "/" + (yy.getMonth() + 1); 
    dateArray.push(strDate); 
} 
return dateArray; 
} 
+0

作業中のプランナーを提供できますか? –

+0

最初の列には 'position:absolute;'があります。右? – Banzay

+0

@Banzayはいそうです。 –

答えて

0

function getDates(date1, date2) { 
 
var day = 1000 * 60 * 60 * 24; 
 
var diff = (date2.getTime() - date1.getTime())/day; 
 
var dateArray = new Array(); 
 
dateArray.push("Unit/Count"); 
 
for(var i=0; i<=diff; i++) 
 
{ 
 
    var xx = date1.getTime() + day * i; 
 
    var yy = new Date(xx); 
 

 
    var strDate = yy.getDate() + "/" + (yy.getMonth() + 1); 
 
    dateArray.push(strDate); 
 
} 
 
return dateArray; 
 
} 
 

 
var customers = new Array(); 
 
customers.push(["TN04 AH 0253", "55"]); 
 
customers.push(["TN04 AF 8830", "67"]); 
 
customers.push(["TN37 CM 1249", "33"]); 
 
customers.push(["TN19 F 9175", "47"]); 
 
customers.push(["TN37CM 1932", "0"]); 
 

 
var date = new Date(); 
 
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1); 
 
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); 
 

 
var dateArray = getDates(firstDay, lastDay); 
 

 
// Create a HTML Table element. 
 
var table = document.createElement("TABLE"); 
 
table.setAttribute('class', 'tablemy'); 
 
table.border = "1"; 
 

 
// Get the count of columns. 
 
var columnCount = customers[0].length; 
 

 
var row = table.insertRow(-1); 
 
for (var i = 0; i < dateArray.length; i++) { 
 
    var headerCell = document.createElement("TH"); 
 
    if (i === 0) { 
 
     headerCell.setAttribute('class', 'headcol'); 
 
    } else { 
 
     headerCell.setAttribute('class', 'thmy'); 
 
    } 
 
    //headerCell.setAttribute('class', 'thmy'); 
 
    headerCell.innerHTML = dateArray[i]; 
 
    row.appendChild(headerCell); 
 
} 
 

 
// Add the data rows. 
 
for (var i = 0; i < customers.length; i++) { 
 
    row = table.insertRow(-1); 
 
    row.setAttribute('class', 'trmy'); 
 
    for (var j = 0; j < columnCount; j++) { 
 
     var cell = row.insertCell(-1); 
 
     if (j === 0) { 
 
      cell.setAttribute('class', 'headcol'); 
 
     } else { 
 
      cell.setAttribute('class', 'tdmy'); 
 
     } 
 
     //cell.setAttribute('class', 'tdmy'); 
 
     cell.innerHTML = customers[i][j]; 
 
    } 
 
} 
 

 
var dvTable = document.getElementById("dvTable"); 
 
dvTable.innerHTML = ""; 
 
dvTable.appendChild(table);
html, body { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
.mydiv { 
 
     overflow-y: scroll; 
 
    } 
 
    .headcol { 
 
    position: fixed; 
 
    left: 0; 
 
    width: 100px; 
 
    text-align:center; 
 
    background-color: #4CAF50; 
 
    color: white; 
 
    font-family:arial; 
 
    font-size:13px; 
 
    padding-left:15px; 
 
    padding-right:15px; 
 
    padding-top:10px; 
 
    padding-bottom:10px; 
 
    border: 1px solid #c4c0c0; 
 
} 
 

 
.tablemy { 
 
    border-collapse: collapse; 
 
    border: 1px solid #c4c0c0; 
 
    margin-left: 130px; 
 
} 
 

 
.thmy { 
 
    text-align:center; 
 
    background-color: #4CAF50; 
 
    color: white; 
 
    font-family:arial; 
 
    font-size:13px; 
 
    padding-left:15px; 
 
    padding-right:15px; 
 
    padding-top:10px; 
 
    padding-bottom:10px; 
 
    border: 1px solid #c4c0c0; 
 
} 
 

 
.tdmy { 
 
    white-space: nowrap; 
 
    padding:8px; border-left:1px solid #ccc; border-top:1px solid #ccc; 
 
    padding-left:15px; 
 
    padding-right:15px; 
 
    padding-top:10px; 
 
    padding-bottom:10px; 
 
    font-size:12px; 
 
    font-family:arial; 
 
    border: 1px solid #c4c0c0; 
 
    color:#585858; 
 
} 
 
.trmy:nth-child(odd) { 
 
    background-color:#F5F5F5; 
 
} 
 
tr:nth-child(even) { 
 
    background-color:#ffffff; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="dvTable"></table>

+1

これは全体を動かしました表。 –

+0

私は答えを変更しました。見てください – Banzay

+0

私は試して元に戻す。ありがとう –

関連する問題