2009-12-01 11 views
31

Ho una pagina che contiene il seguente elemento div:ottenere un valore Div in JQuery

<div id="myDiv" class="myDivClass" style="">Some Value</div> 

Come dovrei recuperare il valore ("un qualche valore") sia attraverso JQuery o tramite standard di JS? Ho provato:

var mb = document.getElementById("myDiv"); 

Ma la console del debugger mostra "mb è nullo". Mi stavo solo chiedendo come recuperare questo valore.

---- ---- UPDATE Quando provo il suggerimento ottengo: $ non è una funzione

Questo fa parte di un gestore di eventi JQuery dove sto cercando di leggere il valore quando si fa clic un bottone. La funzione di gestione sta lavorando ma non può interpretare il valore jQuery sembra:

jQuery('#gregsButton').click(function() { 
    var mb = $('#myDiv').text(); 
    alert("Value of div is: " + mb.value); 
}); 
+4

Re: "$ non è una funzione "- Sei sicuro di aver incluso il file jQuery .js? –

+2

@Chris: mi piace il modo in cui hai usato 'Re:';) –

+1

Dove stai impostando quel gestore di eventi? Assicurati che sia in '$ (document) .ready()' o dopo 'myDiv' nel corpo della pagina (di solito è una buona idea mettere gli script alla fine). –

risposta

21
myDivObj = document.getElementById("myDiv"); 
if (myDivObj) { 
    alert (myDivObj.innerHTML); 
}else{ 
    alert ("Alien Found"); 
} 

Sopra il codice mostrerà l'innerHTML, vale a dire se si è utilizzato tag html all'interno div poi mostrerà anche quelli. probabilmente questo non è quello che ti aspettavi. Quindi, un'altra soluzione è quella di utilizzare: proprietà InnerText/textContent [Grazie a bobince, vedere il suo commento]

function showDivText(){ 
      divObj = document.getElementById("myDiv"); 
      if (divObj){ 
       if (divObj.textContent){ // FF 
        alert (divObj.textContent); 
       }else{ // IE   
        alert (divObj.innerText); //alert (divObj.innerHTML); 
       } 
      } 
     } 
+0

Continua a ricevere il messaggio "myDivObj" è NULL nel debugger. Mi chiedo se il fatto che il valore di questa div sia dinamico e popolato da javaScript sia la causa del problema. È un contatore è in costante aumento. – GregH

+1

Era il "innerHTML" che era necessario. Ho ... funziona alla grande. – GregH

+3

Non esiste una proprietà come 'text', c'è' textContent' (standard DOM Level 3 Core) e 'innerText' (solo IE). 'text()' è il metodo jQuery che chiama uno di questi. – bobince

54
$('#myDiv').text() 

Anche se sarebbe meglio fare qualcosa di simile:

var txt = $('#myDiv p').text(); 
 
alert(txt);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="myDiv"><p>Some Text</p></div>

Assicurati di essere collegato anche al tuo file jQuery :)

+1

+1 - e cosa succede se 'myDiv' contiene altri elementi che contengono anche nodi di testo? In che modo l'OP otterrebbe solo il testo di 'myDiv'? –

+3

+1 per aver effettivamente risposto alla domanda di ottenere il valore usando jQuery, non solo semplice JavaScript! – Fenton

11

se div assomiglia a questo:

<div id="someId">Some Value</div> 

si potrebbe recuperare con jQuery in questo modo:

$('#someId').text() 
2

Si potrebbe utilizzare

jQuery('#gregsButton').click(function() { 
    var mb = jQuery('#myDiv').text(); 
    alert("Value of div is: " + mb); 
}); 

Sembra che ci potrebbe essere un conflitto con l'utilizzo del $. Ricorda che la variabile 'mb' non sarà accessibile al di fuori del gestore di eventi. Inoltre, la funzione text() restituisce una stringa, non è necessario ottenere mb.value.

+0

Scusa, ma sono ancora molto nuovo a questo ... il problema con la soluzione proposta sopra è che il debugger ora dà un errore per la riga: var mb = jQuery ('# myDiv'). text() Dire "JQuery" non è riconosciuto ... è come se la libreria JQuery non fosse accessibile dall'interno della funzione. – GregH

+0

Dovrebbe aver detto che il messaggio nel debugger è "JQuery non è definito" – GregH

1

Si potrebbe anche usare innerHTML per ottenere il valore all'interno del tag ....

6

tuo div si presenta così:

<div id="someId">Some Value</div> 

con jQuery:

<script type="text/javascript"> 
    $(function(){ 
     var text = $('#someId').html(); 
     //or 
     var text = $('#someId').text(); 
     }; 
    </script>