Pregunta

Tengo un directorio lleno de ASP clásico código heredado, y casi todos los archivos tienen algo similar a esto:

<input type="hidden" name="driverPayment" value="<% =driverPayment %>">

Luego, más tarde en el código, se está ejecutando algunos JavaScript y haciendo lo siguiente:

var x = document.getElementById('driverPayment')

Esto funciona bien en IE, pero, por supuesto, no funciona en ningún otro lugar porque no hay un atributo de identificación definido.

La solución es pasar por los archivos 1770 y agregar manualmente un atributo de ID que coincida con la propiedad de nombre en la entrada. Así que hazlo así:

<input type="hidden" name="driverPayment" id="driverPayment" value="<% =driverPayment %>">

¿Hay alguna manera de automatizar este proceso utilizando la lógica a continuación?:

  1. Obtener elemento de entrada con un atributo de nombre
  2. Si la entrada tiene el atributo de identificación, muévase a la siguiente entrada
  3. De lo contrario, agregue un atributo de ID a la entrada y le dé un nombre que coincida con el valor del atributo de nombre

Me gustaría hacer esto para los archivos ASP clásicos de 1770 que tengo. Estoy usando texto sublime.

¿Fue útil?

Solución

Puedes usar Regex para que coincida. Mi regex no es genial, pero lo siguiente debería funcionar. Feliz por que otros lo mejoren. Usé algunos regex de esta pregunta.

Haga clic derecho en la carpeta del proyecto

Elija la opción "Buscar en carpeta"

Busque y reemplace las opciones aparecen en la parte inferior de la pantalla. Seleccione la opción Regex (extrema izquierda).

regex-find-and-replace

Ingresar

<(?:input)\s+(?=[^>]*\bname\s*=)(?![^>]*\bid\s*=)[^>]*>?(name="driverPayment")

En Find Field

Ingresar

id="driverPayment" name="driverPayment" 

En el campo Reemplazar

Haga clic en Reemplazar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top