1.一个table如何固定占4行数据
2.假设4行的<table>上面可以放4个问题,如果其中一个问题占用2行的话,那么这个table只能放3条问题着呢么解决

解决方案 »

  1.   

    这个就需要用代码控制下了,table里的数据哪来的?又为什么会有占两行的情况呢?
      

  2.   

    基本思路可能因该是:取一个题目的字符串,判断文字的宽度,比如一个字是12px,而你的表格的一行是有宽度的,这样,就可以粗略的计算出字符串需要占用几行,如果超出了两行,则可以对字符串进行截断操作,外围控制当前表格只占用4行。
    我做了下demo,基本可以实现,但仍不够准确。
    a.html
    -----------------------------------------------------------------
    <html>
    <script language="javascript">
    var g_row_line_width = 180;
    var g_font_width = 7;function demo()
    {
    var datas = new Array(
    "这是第一个题目,这是第一个题目,这是第一个题目。",
    "这是第二个题目",
    "这是第三个题目",
    "这是第四个题目"
    );
    var line_counter = 0;
    var table = "<table style=font-size:12px width="+g_row_line_width+" border=1 cellspacing=0 cellpadding=0>";
    for(var i=0;i<datas.length;i++)
    {
    if(line_counter==4) break; var str = datas[i];
    var str_length = getChartLength( str );

    var row_counter = Math.ceil((str_length*g_font_width)/g_row_line_width);

    var select_row_counter = row_counter; if( row_counter>2 ) select_row_counter=2; if((line_counter+select_row_counter)>4)
    {
    line_counter = 4;
    select_row_counter = 1;
    }
    else
    {
    line_counter += select_row_counter;
    }

    var chart_counter = Math.floor((select_row_counter*g_row_line_width)/(g_font_width))-3;


    var select_str = getStringByChartLength(str,chart_counter);//str.substring(0,chart_counter);
    if(select_row_counter<row_counter) select_str += "...";
    table += "<tr><td>"+select_str+"</td></tr>";

    }
    table += "</table>"; document.body.innerHTML += table;

    }function getStringByChartLength(str,chartlength)
    { var result = "";
    for(var i=0;i<str.length;i++)
    {
    if(chartlength>0)
    {
    if(str.charCodeAt(i) > 127 || str.charCodeAt(i) == 94)
    {
    //是中文
    chartlength = chartlength-2;
    result += str.charAt(i);
    }
    else
    {
    //是英文
    chartlength = chartlength-1;
    result += str.charAt(i);
    }
    }
    else
    {
    //break;
    }
    }
    return result;
    }function getChartLength(s)
    {
    var length = 0;
    for(var i=0;i<s.length;i++)
    {
    if(s.charCodeAt(i) > 127 || s.charCodeAt(i) == 94)
    length+=2;
    else
    length+=1;
    }
    return length;
    }
    </script>
    <body>
    <input type=button value=test onclick=demo()><br>
    </body>
    </html>
    -----------------------------------------------------------------