티스토리 뷰
IT tech Coding/javascript
[대진표 생성 프로그램] td요소의 class의 내용도 저장하는 코드로 만들고 싶다.
Coding Life 2023. 8. 14. 14:56반응형
대진표의 td요소만 저장하면 문제가 있다.
누가 1라운드를 통과했는지. 2라운드 진출자는?
이런 내용을 class에 저장하는 것이 가장 합리적이란 생각이 든다.
그 클래스 내용을 저장하기 위한 나와의 싸움...
// Get all the tables
var tables = $("table[id^='matchlist']");
var tableDataArray = [];
var nameArray = [];
var resultArray = [];
tables.each(function(tableIndex, table) {
// 데이터를 추출하여 변수에 저장하고 서버로 전송하기 위한 작업을 수행합니다.
var tdElements = $(table).find('td');
var tdTextArray = [];
for (var i = 0; i < tdElements.length; i++)
tdTextArray.push(tdElements[i].textContent);
var dataToSend = tdTextArray.join(','); // 콤마로 구분하여 문자열로 만듭니다.
tableDataArray.push(dataToSend);
});
$("#T_table").val(tableDataArray.join(';')); // 각 테이블의 데이터를 세미콜론으로 구분합니다.
현재 만들어놓은 프로그램의 코드는 위와 같다.
td요소의 클래스를 저장하는 방법은? 과연 가능할까?
textContent요소 td와 속성을 모두 저장하려면 class다음과 같은 방법으로 코드를 수정할 수 있습니다.
textContent를 밀어넣는 대신 tdTextArray텍스트와 클래스를 결합하는 객체나 문자열을 밀어넣을 수 있습니다.
배열을 결합하여 데이터 문자열을 형성할 때 새 구조를 고려하여 결합 메커니즘을 조정해야 합니다.
이러한 변경 사항을 구현하는 방법은 다음과 같습니다.
// Get all the tables var tables = $("table[id^='matchlist']"); var tableDataArray = []; tables.each(function(tableIndex, table) { // Extract data to store and send to the server var tdElements = $(table).find('td'); var tdDataArray = []; for (var i = 0; i < tdElements.length; i++) { var tdText = tdElements[i].textContent; var tdClass = tdElements[i].className; // Get class of the td element // Combine textContent and class name using a format of your choice // Here, I'm using a format "textContent|className" tdDataArray.push(tdText + "|" + tdClass); } var dataToSend = tdDataArray.join(','); // Separate data with commas tableDataArray.push(dataToSend); }); $("#T_table").val(tableDataArray.join(';')); // Separate each table's data with a semicolon
위의 코드에서:
각 요소에 대해 "textContent|className" 형식으로 저장 td합니다 .
textContentclassName각 테이블의 데이터는 쉼표로 구분됩니다.
다른 테이블의 데이터는 세미콜론으로 구분됩니다.
참고: 이 구조는 td 텍스트 콘텐츠와 클래스 이름에 "|"가 포함되어 있지 않다고 가정합니다.
성격. 그렇다면 다른 구분 기호를 선택하거나 이 경우를 별도로 처리할 수 있습니다.
이를 화면에 불러오는 함수 제작
function fillTDElementsWithData() {
var data = $("#T_table").val();
if (data !== null) {
var tableDataArray = data.split(';');
var tables = document.querySelectorAll("table[id^='matchlist']");
tables.forEach(function(table, tableIndex) {
var tableData = tableDataArray[tableIndex];
if (tableData !== undefined && tableData !== '') {
var cellDataArray = tableData.split(',');
var tdElements = table.getElementsByTagName('td');
Array.from(tdElements).forEach(function(td, i) {
var cellDataParts = cellDataArray[i].split('|'); // 수정된 부분
var cellText = cellDataParts[0];
var cellClass = cellDataParts[1];
td.textContent = cellText;
td.className = cellClass; // 클래스 추가
var cellContent = cellText.trim();
if (cellContent === 'x') {
td.style.backgroundColor = 'lightgray';
td.style.border = 'lightgray';
} else {
td.style.backgroundColor = '';
td.style.border = '3px solid blue';
}
});
}
});
} else {
var tablesName = ["matchlistA", "matchlistB"];
tablesName.forEach(function(tableId) {
var table = document.getElementById(tableId);
if (!table) {
console.warn(`Table with id ${tableId} does not exist.`);
return;
}
var trElements = table.getElementsByTagName('tr');
trElements.forEach(function(tr, i) {
var cells = tr.cells;
if (tableId === "matchlistA" && cells.length > 1 && cells[0].textContent.trim() === 'x') {
if (i % 5 === 2 && trElements[i + 5] && trElements[i + 5].cells.length > 1) {
trElements[i + 5].cells[1].textContent = '(승)';
} else if (trElements[i - 5] && trElements[i - 5].cells.length > 1) {
trElements[i - 5].cells[1].textContent = '(승)';
}
} else if (tableId === "matchlistB" && cells.length > 5 && cells[5].textContent.trim() === 'x') {
if (i % 5 === 2 && trElements[i + 5] && trElements[i + 5].cells.length > 4) {
trElements[i + 5].cells[4].textContent = '(승)';
} else if (trElements[i - 5] && trElements[i - 5].cells.length > 4) {
trElements[i - 5].cells[4].textContent = '(승)';
}
}
});
});
}
}
테이블의 (승)을 기록하기 위한 우리들의 처절한 노력~
반응형
'IT tech Coding > javascript' 카테고리의 다른 글
화면의 테이블을 csv로 저장시 한글깨짐 주의할 내용 (0) | 2023.08.16 |
---|---|
토너먼트 코드 연구 (대진표 프로그램) (0) | 2023.08.15 |
svg파일의 면적계산 연구 프로젝트(1차) 자바스크립트로 계산이 가능할까? (0) | 2023.08.13 |
[JS] 순회하면서 테이블의 요소 찾기 (0) | 2023.08.10 |
테이블에 td요소중에 1행과 1열은 제외하고 넣어주는 코드는? 만약에 matchlist0부터 10까지 있다면 다 적용하려면? (0) | 2023.08.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- chatGPT3.5파이썬버전
- #프로그램설치
- 오블완
- 엑셀보호
- General error: 2031
- 캐드자동작도
- #InstallForge
- Bootstrap 5
- json파일편하게보는법
- 엑셀셀보호
- json파일형태보기
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 효율적코딩방법
- sql문장 날짜계산
- 구글드라이브API
- 스크립트작성기초
- 코딩튜토리얼
- 파이썬코드줄바꿈방법
- 프로그래머생활
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 티스토리챌린지
- isset을 적용해야 하는 이유
- 오토핫키가이드
- #파이썬패키징
- ajax오류메시지
- 뫄프로그래밍
- 코딩효율성
- 엑셀입력보호
- 테크에능한여성
- 도면자동생성
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함