1

我正在使用 innerHTML 根据所​​选选项打印出一些带有一些文本框的 div。

当html打印出来时,尽管我在外部、内部或内联的css中对其进行了编码,但div并没有保持它们的宽度。在 firebug 中,显示的宽度设置为 200 像素,但在视觉上您可以清楚地看到宽度没有应用。在 Firefox 和 Chrome 中测试...

谁能帮我?这是一个JSFiddle:

http://jsfiddle.net/HhJhK/

Javascript:

window.getTickets = function () {

    $amountId = document.getElementById('event_tt').value;

    $x = document.getElementById($amountId).value;

    var div = document.getElementById('booking_area');

    div.innerHTML = '<div style="width:750px;clear:both;"><div class="cell" style="width:30%;">First Name</div><div class="cell" style="width:30%;">Last Name</div><div class="cell" style="width:30%;">Email</div></div>';

    for (var i = 1; i <= $x; i++) {
        div.innerHTML = div.innerHTML + '<div style="width:750px;clear:both;"><div class="cell" style="width:30%;"><input type="text" name="par_fname" id="par_fname"></div><div class="cell" style="width:30%;"><input type="text" name="par_lname" id="par_lname"></div><div class="cell" style="width:30%;"><input type="text" name="par_email" id="par_email"></div></div>';
    }
}

CSS:

.cell {
    width:200px;
    display: inline;
    overflow:hidden;
}
4

2 回答 2

3

在创建 html 的字符串中,它在标记中将宽度分配为内联百分比。由于这是一种内联样式,它将优先于 CSS 中指定的内容。您需要style="30%"从 HTML 字符串中删除 。

然后将 .cell 更改为inline-block以使宽度生效。

.cell{
    width:200px;
    display: inline-block;
    overflow:hidden;
}

示例 http://jsfiddle.net/HhJhK/1/

重构的 JS

window.getTickets = function() {

    $amountId = document.getElementById('event_tt').value;

    $x = document.getElementById($amountId).value;

    var div = document.getElementById('booking_area');

    div.innerHTML = '<div style="width:750px;clear:both;"><div class="cell">First Name</div><div class="cell" >Last Name</div><div class="cell">Email</div></div>';

    for (var i=1;i<=$x;i++){
        div.innerHTML = div.innerHTML + '<div style="width:750px;clear:both;"><div class="cell"><input type="text" name="par_fname" id="par_fname"></div><div class="cell"><input type="text" name="par_lname" id="par_lname"></div><div class="cell"><input type="text" name="par_email" id="par_email"></div></div>';
   }

}

于 2013-08-15T00:05:02.787 回答
1

你需要.cell上课的display: inline-block;

干杯

于 2013-08-15T00:05:02.913 回答