제 질문은 ID의 하드 코딩이 덜 필요하도록 HTML/JS를 구조화 할 수 있는지 여부입니다. (이것은 내가 "효율적으로"염두에 두었던 것입니다).JavaScript를 가장 효율적으로 사용하여 HTML 테이블 행의 다른 요소에서 텍스트를 취소 할 수 있습니까?
현재로서는 <table>
에 많은 <tr>
개의 테이블 행이 있습니다. 각 행에는 두 개의 셀 (<td>
테이블 데이터 요소)이 있습니다. 첫 번째 셀에는 확인란과 앵커 링크가 있습니다. 두 번째 <td>
셀은 링크의 텍스트 설명 일뿐입니다. 그들은 다음과 같이 :
<tr>
<td class="codecol">
<input type="checkbox">
<a title="I&C SCI 33" onclick="return showCourse(this, 'I&C SCI 33');">I&C SCI 33</a>
</td>
<td>Intermediate Programming</td>
</tr>
는 그러나, 나는이 확인란이 선택 (및 선택하지 않은 경우 unstrike) 경우 링크 및 텍스트 설명을 통해 공격 할. 나는이와 데 문제는 HTML 파일의 변화에 하드 코딩되어
function checkStrikethrough(checkboxElemnt, rowData) {
//strikethrough text if checked
if (checkboxElemnt.checked) {
for(var i = 0; i < rowData.length ; i++) {
var elemnt = document.getElementById(rowData[i]);
elemnt.style.setProperty("text-decoration", "line-through");
}
}
// normal text if not checked
else {
for(var i = 0; i < rowData.length ; i++) {
var elemnt = document.getElementById(rowData[i]);
elemnt.style.setProperty("text-decoration", "none");
}
}
}
: 다음과 같이 그래서 나는 JS 기능을 쓴 아이디의 매개 변수로 전달합니다. 최소한의 노력을 필요로이를 구현하는 몇 가지 방법이 있습니다 - 그래서
<tr>
<td class="codecol">
<input type="checkbox" onchange='checkStrikethrough(this, ["icsci33Link", "icsci33Td"]);'>
<a id="icsci33Link" title="I&C SCI 33" onclick="return showCourse(this, 'I&C SCI 33');">I&C SCI 33</a>
</td>
<td id="icsci33Td">Intermediate Programming</td>
</tr>
<tr>
<td class="codecol">
<input type="checkbox" onchange='checkStrikethrough(this, ["icsci45cLink", "icsci45cTd"]);'>
<a id="icsci45cLink" title="I&C SCI 45C" onclick="return showCourse(this, 'I&C SCI 45C');">I&C SCI 45C</a>
</td>
<td id="icsci45cTd">Programming in C/C++ as a Second Language</td>
</tr>
, 내가 궁금 :이 같은 수정하는 것보다 더 좋은 방법이 있다면 궁금해하기 시작 너무 많은 행이있다 HTML을 바꾸려면? 이상적으로 텍스트 편집기에서 "찾기 및 바꾸기"를 한 두 가지만 사용하면 모든 HTML을 변경할 수있는 솔루션이 있습니까?