Pergunta

Eu tenho um diretório cheio de ASP clássico Código herdado, e quase todos os arquivos têm algo semelhante a isso:

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

Mais tarde no código, alguns JavaScript estão em execução e fazendo o seguinte:

var x = document.getElementById('driverPayment')

Isso funciona bem no IE, mas é claro que não funciona em nenhum outro lugar, porque não há atributo de identificação definido.

A correção é passar pelos arquivos 1770 e adicionar manualmente um atributo de ID que corresponda à propriedade Name na entrada. Então, faça assim:

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

Existe uma maneira de automatizar esse processo usando a lógica abaixo:

  1. Obtenha o elemento de entrada com um atributo de nome
  2. Se a entrada tiver um atributo de identificação, vá para a próxima entrada
  3. Caso contrário, adicione um atributo de identificação à entrada e dê um nome que corresponda ao valor do atributo de nome

Eu gostaria de fazer isso para os arquivos ASP clássicos de 1770 que tenho. Estou usando texto sublime.

Foi útil?

Solução

Você pode usar o Regex para corresponder. Meu regex não é ótimo, mas o seguinte deve funcionar. Feliz por outros melhorarem. Eu usei um pouco de regex de essa questão.

Clique com o botão direito do clique na pasta do projeto

Escolha a opção "Localizar na pasta"

Encontre e substitua as opções aparecem na parte inferior da tela. Selecione a opção Regex (extrema esquerda).

regex-find-and-replace

Digitar

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

em Find Field

Digitar

id="driverPayment" name="driverPayment" 

no campo Substituir

Clique em Substituir

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top