Creé un formulario que resalta el texto coincidente ingresado en un área de texto en la página a medida que realiza selecciones en las casillas de verificación. Parece funcionar correctamente cuando está marcando las casillas de verificación, pero tan pronto como haya marcado más de una casilla de verificación y luego desmarque una sola casilla de verificación, se eliminarán todos los aspectos destacados. Me gustaría que solo elimine el resaltado de la casilla sin marcar cuando se cambia de marcada a sin marcar.
Soy bastante nuevo en JavaScript, así que no estoy seguro de si me estoy perdiendo algo obvio aquí o no, pero no entiendo por qué obtengo este comportamiento.
Aquí hay una función de ejemplo que maneja el resaltado en una sola casilla de verificación. Puede ver mi código completo en el enlace de violín de JS aquí: https://jsfiddle.net/gosem01/kf8az926/1/
function highlightArrowsOnCheck() { var instanceArrows = new Mark(highlightedParagraph); var options = { "debug": true, "log": window.console }; if (checkedArrows.checked) { instanceArrows.markRegExp(/\«|»/g, options); } else { instanceArrows.unmark(options); } }Documentos de mark.js: https://markjs.io/
Use el parámetro className para marcar/desmarcar un grupo
function highlightArrowsOnCheck() { var instanceArrows = new Mark(highlightedParagraph); var options = { "className": "arrows", // added "debug": true, "log": window.console }; if (checkedArrows.checked) { instanceArrows.markRegExp(/\«|»/g, options); } else { instanceArrows.unmark(options); } } Nota: la función togglecheckall se simplifica al activar el evento mediante programación.