Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在html中折叠/展开行之间的数据_Javascript_Html - Fatal编程技术网

Javascript 如何在html中折叠/展开行之间的数据

Javascript 如何在html中折叠/展开行之间的数据,javascript,html,Javascript,Html,我有这样一个要求,我必须像这样首先显示数据,因为每行的展开/折叠按钮都应该显示 工作数据 JobId JobName Descriptipn Type ------------------------------------------- (+)(-) 1 A ABC Type1 (+)(-) 2 B ABC Type2

我有这样一个要求,我必须像这样首先显示数据,因为每行的展开/折叠按钮都应该显示

工作数据

           JobId    JobName   Descriptipn   Type
         -------------------------------------------
(+)(-)     1          A         ABC          Type1
(+)(-)     2          B         ABC          Type2
若我单击expand按钮,那个么将调用一个ajax方法,并从DB加载作业及其相关数据。现在,所选作业数据应显示在job1区域中,这意味着, job1行应展开,job2、job3…jobn应与前面相同

如果我点击了job2,那么job1应该被折叠,而job2应该被展开

我可以在上面的表格中显示,但我无法实现此展开/折叠功能

所选作业的数据是大数据,大约有3,4个表。如何显示如此大的数据

当我在谷歌搜索时,我发现不建议在tr标签中使用div标签

我的密码来了

   <table class="data">
        <thead>
            <tr>
                <th onclick="javascript:void(0);"><bean:message key="jsp.sp.jobs.jobData.jobNumber"/></th>
                <th onclick="javascript:void(0);"><bean:message key="jsp.sp.jobs.jobData.jobName"/></th>
                <th onclick="javascript:void(0);"><bean:message key="jsp.sp.jobs.jobData.jobDescription"/></th>
                <th onclick="javascript:void(0);"><bean:message key="jsp.sp.jobs.jobData.jobType"/></th>
            </tr>
        </thead>
        <% int i = 1; %>
        <tbody>
            <logic:iterate id="job" name="jobListe" type="com.abc.model.sp.job.JobVO">

                <bean:define id="pk" name="job" property="primaryKey"/>
                <bean:define id="rowClass">
                    <%=job.equals(serviceProtokollDRS.getSelectedJob()) ? 
                            "mark" : Globalerie.EVEN_OR_ODD[i]%>
                </bean:define>

                <tr class="<bean:write name="rowClass"/>" id="<bean:write name="pk"/>"
                    onclick="javascript:Job.select('<bean:write name="pk"/>');">
                    <td><bean:write name="job" property="jobNummer"/></td>
                    <td><bean:write name="job" property="jobName"/></td>
                    <td><bean:write name="job" property="desc"/></td>
                    <td><bean:write name="job" property="type"/></td>
                </tr>
                <% i = 1 -i; %>
            </logic:iterate>
        </tbody>
    </table>


在这种情况下,他们不使用jquery,只使用javascript。

我会在每一行下面创建一行,用div保存扩展数据(使用colspan填充表的宽度),然后在该单元格中构建内容。跟踪当前扩展的单元格元素,这样可以在扩展另一个单元格元素时轻松删除它

这不是最干净的解决方案,但是如果没有像jQuery这样的库,您就没有很多选择

var expanded=null;
expand=函数(目标,作业ID){
//检索jobId的数据
如果(扩展){
expanded.parentNode.removeChild(已展开);
}
var dataRow=target.parentNode.parentNode.nextElementSibling,
dataCol=dataRow.firstElementChild.nextElementSibling;
附录数据(数据列、作业ID);
};
折叠=功能(目标){
如果(扩展){
var dataRow=target.parentNode.parentNode.nextElementSibling;
if(expanded.parentNode.parentNode==数据行){
expanded.parentNode.removeChild(已展开);
扩展=空;
}
}
};
var APPENDATA=函数(单元格,作业ID){
var dataTable=document.createElement('TABLE'),
tr=document.createElement('tr'),
td=document.createElement('td');
var t=document.createTextNode(“作业数据为”+jobId);
td.儿童(t);
tr.appendChild(td);
dataTable.appendChild(tr);
cell.appendChild(数据表);
扩展=数据表;
}
th,td{
填充物:5px;
}
a.行动{
文字装饰:首字母;
}
td表{
边框:1px纯黑;
宽度:100%;
}

工作ID
职务名称
职位描述
|
j-1
工作1
这是第一份工作
|
j-2
工作2
这是第二份工作

谁说您只能使用
创建表P