【问题标题】:Columns not matching between thead and tbodythead 和 tbody 之间的列不匹配
【发布时间】:2012-12-19 22:54:54
【问题描述】:

我在这里有一个应用程序:Application

在应用程序中,请执行以下操作:

  1. 您会在左侧看到一个绿色的加号按钮,单击它会打开一个模态窗口。

  2. 在模式窗口的搜索栏中输入短语single 并提交搜索。下面将显示一个表格。

  3. 通过单击“添加”按钮从表格中添加一行,它将在顶部控件中添加信息。

  4. 最后点击“添加问题”按钮,这将在下面添加一个表格行。

现在我遇到的问题是<thead> 中的列和<tbody> 中的列不匹配。我的问题是如何让这些列匹配?

HTML 代码如下所示:

    var $tbody = $('#qandatbl > tbody'); 
    var $tr = $("<tr class='optionAndAnswer' align='center'>");
    var $td = $("<td class='extratd'>");
    var $plusrow = $("<td class='plusrow'></td>");
    var $qid = $("<td class='qid'></td>").text(qnum);
    var $question = $("<td class='question'></td>");
    var $noofanswers = $("<div class='noofanswers'>2. Number of Answers:<br/></div>");
    var $options = $("<div class='option'>1. Option Type:<br/></div>");
    var $answer = $("<div class='answer'>3. Answer:<br/></div>");
    var $replies = $("<td class='noofreplies'><div class='wrapper'></div></td>");
    var $weight = $("<td class='weight'></td>");
    var $image = $("<td class='image'></td>"); 
    var $video = $("<td class='video'></td>");
    var $audio = $("<td class='audio'></td>");

...

    $tr.append($plusrow);
    $tr.append($qid);
    $tr.append($question);
    $tr.append($td);
    $td.append($options);
    $td.append($noofanswers);
    $td.append($answer);
    $tr.append($replies);
    $tr.append($weight);   
    $tr.append($image);  
    $tr.append($video);
    $tr.append($audio);
    $tbody.append($tr); 

下面是 html 表格,其中包含表格标题列以及表格行附加到的位置:

<table id="qandatbl" align="center">
<thead class="tblhead">
<tr>
    <th></th>
    <th class="qid">Question No</th>
    <th class="question">Question</th>
    <th class="optandans">Option and Answer</th>
    <th class="noofreplies">Number of Replies</th>
    <th class="weight">Number of Marks</th>
    <th class="image">Image</th>
    <th class="video">Video</th>
    <th class="audio">Audio</th>
</tr>
</thead>
<tbody class="tblbody">
</tbody>
</table>

最后是CSS代码:

body{
    font-size:85%;  
}           

#qandatbl{
    border:1px black solid;
    border-collapse:collapse;
}

#qandatbl td { 
    vertical-align: middle;
}

#qandatbl th{
    border:1px black solid;
    border-collapse:collapse;
    text-align:center;
}

.tblhead, .tblbody {
    display: block;
}

.tblbody{
    height: 500px;
    overflow: auto;
    width:100%; 
}

.extratd{
    border:1px black solid;
    border-collapse:collapse;
}

.qid { 
    min-width:3%;
    max-width:3%;
    font-weight:bold;
    border:1px black solid;
    border-collapse:collapse;
}

.question { 
    min-width:25%;
    max-width:25%;
    border:1px black solid;
    border-collapse:collapse;
}

.noofanswers{
    min-width:100%;
    max-width:100%;
    padding-top:5%;
    padding-bottom:5%;
}

.noofreplies{
    min-width:3%;
    max-width:3%;
    border:1px black solid;
    border-collapse:collapse;
}

.optandans{
    min-width:30%;
    max-width:30%;
    border:1px black solid;
    border-collapse:collapse;
}

.option{
    min-width:100%;
    max-width:100%;
    padding-top:5%;
    padding-bottom:5%;
}

.weight { 
    min-width:3%;
    max-width:3%;
    border:1px black solid;
    border-collapse:collapse;
    }

.answer { 
    min-width:100%;
    max-width:100%;
    padding-top:5%;
    padding-bottom:5%;
     }

.audio{
    min-width:11%;
    max-width:11%;
    border:1px black solid;
    border-collapse:collapse;
    }

.video{
    min-width:11%;
    max-width:11%;
    border:1px black solid;
    border-collapse:collapse;
    }

.image{
    min-width:11%;
    max-width:11%;
    border:1px black solid;
    border-collapse:collapse;
    position:relative;
    }

.plusrow{
    min-width:2%;
    max-width:2%;
    border:1px black solid;
    border-collapse:collapse;
    }

我已经包含了一个 jsfiddle,因此您可以查看它的演示并测试您的任何想法:http://jsfiddle.net/heA2b/1/

【问题讨论】:

  • 绿色按钮不起作用
  • 只是得到一个 php 错误,按钮什么也不做

标签: javascript html css


【解决方案1】:

第一个答案 (user1721135) 不正确,这是因为您已为 thead 和 tbody 分配了“阻止”的显示。删除它,您的问题就会消失。

他是对的,如果它们相同,您不必分配混合和最大宽度,但这不是导致您的问题的原因。

编辑以添加工作示例:http://codepen.io/joe/pen/gqzbf

【讨论】:

  • 嗨,感谢您的回答,但我需要为 thead 和 tbody 设置“块”的原因是我希望表格滚动并带有修复标题。那么我可以问,如果我需要“删除”块以保持列匹配,那么如何显示具有固定标题和列匹配的滚动表?我已经标记了你的答案,如果你不介意并且有时间和想法,这只是我请求帮助的问题
  • 这里有一个问题:stackoverflow.com/questions/5345390/tabletbody-scrollable 涵盖了它。可悲的是,这看起来并不简单。
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 2022-12-30
  • 2019-04-21
  • 2017-10-24
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
相关资源
最近更新 更多