¿Hay alguna manera de marcar las casillas de verificación según el texto que las sigue? Una aplicación en el trabajo que requiere que marque MUCHAS casillas según el texto que sigue. Parece que podría hacerse programáticamente, pero definitivamente está más allá de mi conocimiento limitado
Aquí hay un fragmento oculto de la página.
<tr> <td><span title="original"><input id="a0" type="checkbox" name="orginal_a0" value="0"><label for="a0"> <div class="List"> <div> <div>Default Thing</div> </div> </div> </label></span></td> </tr> <tr> <td><span title="original"><input id="a1" type="checkbox" name="original_a1" value="1"><label for="a1"> <div class="List"> <div> <div>New Thing</div> </div> </div> </label></span></td> </trSé que podría basarme en la identificación o el nombre de entrada, pero desafortunadamente no ayudan a identificar si debo o no marcar la casilla. Es el texto que sigue al cuadro lo que es importante. Si pudiera hacerlo, marcaría cualquier casilla que comience con "Nuevo" o cualquier otro texto, pero tampoco marcaría las que comienzan con "Predeterminado". Entonces, en el ejemplo anterior, marcaría la segunda casilla y no marcaría la primera. En la aplicación, generalmente se marcan entre 50 y 75 casillas, pero se deja una cantidad similar sin marcar. Idealmente, sería algo que podría escribir en la consola o convertir en un bookmarklet.
es posible?
Puede recorrer todas las celdas, verificar si el texto no comienza con default y establecer el estado checked en la input
Como nota al margen, es mejor no anidar un elemento div dentro de un elemento en línea como un span o una label
const td = document.querySelectorAll('td'); [...td].forEach((cell) => { const text = cell.textContent.trim(); if (!text.match(/^default/i)) { cell.querySelector('input').checked = true; } }); <table> <tr> <td> <span title="original"> <input id="a0" type="checkbox" name="orginal_a0" value="0"> <label for="a0">Default Thing</label> </span> </td> </tr> <tr> <td> <span title="original"> <input id="a1" type="checkbox" name="original_a1" value="1"> <label for="a1">New Thing</label> </span> </td> </tr> </table>Este ejemplo recorre todas las casillas de verificación y toma el siguiente elemento, que se supone que es la etiqueta. Si el div indicado no comienza con "Predeterminado", marcará la casilla.
const allCheckboxes = document.querySelectorAll("input[type='checkbox']"); for (let checkbox of allCheckboxes) { // get the label element and locate the appropriate div within let appropriateDiv = checkbox.nextElementSibling.querySelector("div.List div div"); if (appropriateDiv && !appropriateDiv.innerText.startsWith("Default")) { checkbox.checked = true; } } <table><tbody> <tr> <td><span title="original"><input id="a0" type="checkbox" name="orginal_a0" value="0"><label for="a0"> <div class="List"> <div> <div>Default Thing</div> </div> </div> </label></span></td> </tr> <tr> <td><span title="original"><input id="a1" type="checkbox" name="original_a1" value="1"><label for="a1"> <div class="List"> <div> <div>New Thing</div> </div> </div> </label></span></td> </tr> </tbody></table>