Javascript 如何对包含复选框的表进行排序
我有一个问题,我正在尝试对一个包含一些数据和复选框的表进行排序。排序对数据有效,但对复选框无效 以下是我尝试过的:这是一种按序列号排序的方法Javascript 如何对包含复选框的表进行排序,javascript,reactjs,bootstrap-4,Javascript,Reactjs,Bootstrap 4,我有一个问题,我正在尝试对一个包含一些数据和复选框的表进行排序。排序对数据有效,但对复选框无效 以下是我尝试过的:这是一种按序列号排序的方法 sortBySerial(key) { let sorted = [...this.state.jobRequestArray] const asc = this.state.serialNumberOrder === 'asc'; this.setState({ sortTable: true, showArrowSerialNumber: t
sortBySerial(key) {
let sorted = [...this.state.jobRequestArray]
const asc = this.state.serialNumberOrder === 'asc';
this.setState({
sortTable: true,
showArrowSerialNumber: true,
showArrowDetail: false,
showArrowStatus: false,
showArrowStatusDate: false
})
sorted.sort((a, b) => {
if (a[key] < b[key]) {
this.switch();
return asc ? -1 : 1;
} else if (a[key] > b[key]) {
this.switch();
return asc ? 1 : -1;
} else {
return 0;
}
});
if (asc) {
this.setState({
showArrowSerialNumberAsc: true,
serialNumberOrder: 'desc'
})
} else {
this.setState({
showArrowSerialNumberAsc: false,
serialNumberOrder: 'asc'
})
}
this.setState({
jobRequestArray: sorted
})}
sortBySerial(键){
让排序=[…this.state.jobRequestArray]
const asc=this.state.serialNumberOrder=='asc';
这是我的国家({
sortTable:是的,
showrowserialnumber:true,
showarrow详细信息:false,
显示箭头状态:false,
showArrowStatusDate:false
})
排序。排序((a,b)=>{
如果(a[键]b[键])为else{
这个.switch();
返回asc?1:-1;
}否则{
返回0;
}
});
如果(asc){
这是我的国家({
showArrowSerialNumberAsc:正确,
serialNumberOrder:“描述”
})
}否则{
这是我的国家({
showArrowSerialNumberAsc:false,
serialNumberOrder:“asc”
})
}
这是我的国家({
jobRequestArray:已排序
})}
这是方法switch(),对于该方法,我要做的是在对表进行排序时,将其与requestReworkArray内部的内容(选中复选框中的值)和复选框值进行比较
例如,如果我单击值为1的复选框,并且有另一个值为2的复选框未选中,那么当我排序时。这种方法将再次进行比较,并在正确的位置进行检查和取消检查,但似乎不起作用
switch() {
var checkboxes = document.querySelectorAll('input[type="checkbox"]');
this.state.requestReworkArray.map((currentRequest) => {
if (!checkboxes[0].checked && this.state.sortTable) {
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].name !== "print") {
if (checkboxes[i].value !== currentRequest) {
checkboxes[i].checked = false
} else {
checkboxes[i].checked = true
}
}
}
}
});}
switch(){
var checkbox=document.querySelectorAll('input[type=“checkbox”]”);
this.state.requestReworkArray.map((currentRequest)=>{
如果(!复选框[0]。已选中&&this.state.sortTable){
对于(变量i=0;i
这是我的桌子:
<tr key={index} >
<td><input type="checkbox"
name={index}
id={index}
key={index}
defaultChecked={currentJobs.status === "ERROR" ? this.checkStatusError(currentJobs.serialNumber, index) : false}
onClick={this.addingItem}
value={currentJobs?.serialNumber}
></input><span className="ml-4">{currentJobs?.serialNumber}</span></td>
<td>{currentJobs.status === "CREATED" ? t('Status.1') : currentJobs.status === "IN_PRODUCTION" ? t('Status.2') :
currentJobs.status === "ERROR" ? t('Status.8') : currentJobs.status === "PRODUCED" ? t('Status.4') :
currentJobs.status === "CLOSED" ? t('Status.5') : currentJobs.status === "CANCELLED" ? t('Status.10') : null}</td>
<td>{moment(currentJobs?.statusDate).format("YYYY-MM-DD HH:mm:ss")}</td>
<td>{currentJobs?.detail}</td>
</tr>
{currentJobs?.serialNumber}
{currentJobs.status==“已创建”?t('status.1'):currentJobs.status==“正在生产”?t('status.2'):
currentJobs.status==“错误”?t('status.8'):currentJobs.status==“已生产”?t('status.4'):
currentJobs.status==“已关闭”?t('status.5'):currentJobs.status==“已取消”?t('status.10'):null}
{矩(currentJobs?.statusDate).format(“YYYY-MM-DD HH:MM:ss”)}
{currentJobs?.detail}
我希望我足够清楚,并提前感谢您的帮助