Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

razuco

como pegar ID's dentro de um site

Recommended Posts

Boa noite, estou tentando fazer uma pequena aplicação para greasemonkey, no caso o que preciso fazer é pegar dentro de um site os valores de alguns inputs, porem estes inputs são gerados dinamicamente e nem sempre possuem uma ordem para nomear os ID's. Há apenas um prefixo nos ID's que preciso pegar que é "ctl00_cph1_gdvItens_ctl+ Nº do item". Segue um exemplo:

<input id="ctl00_cph1_gdvItens_ctl02_btnEnviar" class="button" type="submit" style="padding: 0" value="Enviar" name="ctl00$cph1$gdvItens$ctl02$btnEnviar">

<input id="ctl00_cph1_gdvItens_ctl03_btnEnviar" class="button" type="submit" style="padding: 0" value="Enviar" name="ctl00$cph1$gdvItens$ctl03$btnEnviar">

<input id="ctl00_cph1_gdvItens_ctl07_btnEnviar" class="button" type="submit" style="padding: 0" value="Enviar" name="ctl00$cph1$gdvItens$ctl07$btnEnviar">

Qual seria a ferramenta correta para que o script lesse todo o HTML do site e jogasse os ID's num array?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar o querySelector, é uma boa ferramenta, só pensei nele agora em javascript.

var idPrefix = 'ctl00_cph1_gdvItens_ctl';
var strPrefix = '*[id^="'+idPrefix+'"]';


function fazerAlgo(prefix,action){
    var btnArray = document.querySelectorAll(prefix);
    for(var i=0 ; i < btnArray.length ; i++){
        action(btnArray[i]);
    }
}

function Action(element){
    elementID = element.id.slice(idPrefix.length,idPrefix.length+1);
    alert(elementID);
}

fazerAlgo(strPrefix,Action);

Compartilhar este post


Link para o post
Compartilhar em outros sites

jQuery

var getID = [];
$('[id*="ctl00_cph1_gdvItens_ctl"]').each(function(){
    getID.push( $( this ).attr('id') );
});
console.log( getID );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver aqui, só que tive que fazer uma pequena gambiarra pra funcionar, o jquery estava pegando todos os inputs com o mesmo prefixo, no caso pra ficar correto preciso que o script pegue usando espressões regulares o prefixo ctl00_cph1_gdvItens_ctl e que contenha no final btnEnviar.

 

Alguma luz?

 

Segue como ficou meu codigo

var getID = [];
var filtraID = [];

$('[id*="ctl00_cph1_gdvItens_ctl"]').each(function(){

    getID.push( $( this ).attr('id') );
});

var contaGetID = getID.length;


 for(i=0; i < contaGetID; i++){
        
        if(getID[i].substring(26) == "btnEnviar") {
            
          //  filtraID[i] == getID[i];
          filtraID.push(getID[i]);
            
            
            
        }
        
        
    }

alert(filtraID.length);
 

Compartilhar este post


Link para o post
Compartilhar em outros sites


var getID = [];

$('[id*="ctl00_cph1_gdvItens_ctl"]').each(function(){

var id = $( this ).attr('id');

if( id.split('_').pop() == 'btnEnviar' ){

getID.push( id );

}

});

console.log( getID );

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.