2009-11-06 4 views

risposta

9

È necessario parseInt per gestire le stringhe come numeri.

$("#shortfall").text(parseInt($("#shortfall").text()) + 1); 
+1

che potrebbero causare confusione se il valore iniziale è, ad esempio, "077": parseInt ("077") + 1 = 64. –

+0

Haha buona. Ma chi usa gli ottali al giorno d'oggi? =) – BalusC

+0

Come hai determinato che era un numero intero? Cosa succede se è un decimale? parseInt ("0.34") = 0 – tvanfosson

2

Nel momento in cui arriva al browser, la tua espressione sarà stata valutata e trasformata in un numero. Per usare jQuery devi semplicemente ottenere il valore del testo dello span, convertirlo in un numero, quindi sostituire il valore del testo. Dovrai convertire il valore in un numero prima di eseguire l'aggiunta o eseguirà concatenazione di stringhe.

$("#shortfall").each(function() { 
    $(this).text(Number($(this).text()) + 1); 
}); 

Aggiornato: sto usando ciascuno per mostrare come si dovrebbe fare questo usando un selettore generica che potrebbe accettare un insieme di ingressi. Nel tuo caso, se sai che corrisponde esattamente a un elemento, potresti ottimizzarlo con il rischio di doverlo riscrivere se vuoi che il codice si applichi a più elementi.

var span = $("#shortfall"); 
span.text(Number(span.text()) + 1); 

Aggiornato: necessità di utilizzare il testo() (o html()), in quanto l'elemento è uno SPAN, non un input.

+0

per cosa è questa funzione each()? Ce n'è solo uno. – BalusC

+0

Penso che il valore possa essere ottenuto solo da $ ('# shortfall) .attr (' valore '); – Steven

+0

@Steven: no, per testo(). Non è un attributo, ma solo il corpo. – BalusC

1

$(document).ready(function(){ 
 
    $("#increment").click(function(){ 
 
    $(".sl-no").html(function(){ 
 
     $(this).html(parseInt($(this).html())+1); 
 
    }); 
 
    }); 
 
});
table { 
 
    font-family: arial, sans-serif; 
 
    border-collapse: collapse; 
 
    width: 100%; 
 
} 
 

 
td, th { 
 
    border: 1px solid #dddddd; 
 
    text-align: left; 
 
    padding: 8px; 
 
} 
 

 
tr:nth-child(even) { 
 
    background-color: #dddddd; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
    <button id='increment'>Click to Increment</button> 
 
<table> 
 
    <tr> 
 
    <th>Sl</th> 
 
    <th>Company</th> 
 
    <th>Contact</th> 
 
    <th>Country</th> 
 
    </tr> 
 
    <tr> 
 
    <td class='sl-no'>1</td> 
 
    <td>Alfreds Futterkiste</td> 
 
    <td>Maria Anders</td> 
 
    <td>Germany</td> 
 
    </tr> 
 
    <tr> 
 
    <td class='sl-no'>2</td> 
 
    <td>Centro comercial Moctezuma</td> 
 
    <td>Francisco Chang</td> 
 
    <td>Mexico</td> 
 
    </tr> 
 
    <tr> 
 
    <td class='sl-no'>3</td> 
 
    <td>Ernst Handel</td> 
 
    <td>Roland Mendel</td> 
 
    <td>Austria</td> 
 
    </tr> 
 
    <tr> 
 
    <td class='sl-no'>4</td> 
 
    <td>Island Trading</td> 
 
    <td>Helen Bennett</td> 
 
    <td>UK</td> 
 
    </tr> 
 
    <tr> 
 
    <td class='sl-no'>5</td> 
 
    <td>Laughing Bacchus Winecellars</td> 
 
    <td>Yoshi Tannamuri</td> 
 
    <td>Canada</td> 
 
    </tr> 
 
    <tr> 
 
    <td class='sl-no'>6</td> 
 
    <td>Magazzini Alimentari Riuniti</td> 
 
    <td>Giovanni Rovelli</td> 
 
    <td>Italy</td> 
 
    </tr> 
 
</table>

+1

Per favore aggiungi una spiegazione. –