Somma variabili impossibile

Gigi La Trottola

Nuovo Utente
6 Feb 2016
3
0
0
Buongiorno a tutti,spero innanzitutto di non aver sbagliato thread per esporvi il mio problema.
Vorrei una vostra consulenza/aiuto riguardo un usercript che ho elaborato.
Premessa:sono un autodidatta,aimè senza solide basi nei linguaggi di programmazione (da qui i possibili e svariati errori),ma con tanta voglia di imparare e mettermi alla prova.
Cerco di sintetizzare il mio problema.
Prendendo spunto da vari script utente contenuti in librerie e studiando le diverse opzioni apllicabili ad essi ,ho ottenuto uno script sfruttando Jquery e Ajax che preleva un valore (stesso id) da più pagine riportandolo nella colonna di una tabella situata in un'altra pagina dello stesso sito.
Riporto lo script ottenuto e funzionante


Codice:
unsafeWindow.jQuery(document).ajaxComplete(function(event, xhr, settings)
{   
    rebindClicks();
    
    if (settings.url === "/ajax/transfer.ajax.php")
    {
        calcoloVal();
    }
});

function rebindClicks()
{
    $.each($('#pages').find('span'), function(index, span) 
    {
        var clickAntigo = $(span).attr('onclick');
		$(span).removeAttr('onclick');
        $(span).off('click');
        $(span).on('click', function()
                   {
                       eval(clickAntigo);
                       calcoloVal()();			          
                       rebindClicks();
                   });
	});
}



function calcoloVal()
{
	$("tr.header").append("<th class='valore' title='' style='width: 60px; cursor: pointer;''>New Val</th>");

	var indix = "";
	$("div.player_name > a").each
	(function(e, player) 
	{
		indix = "player_id="+ $(player).attr("player_link");
		
		var xhr = new XMLHttpRequest(); 
		xhr.open("POST", "http://trophymanager.com/ajax/tooltip.ajax.php", true);
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.onreadystatechange = function()
		{ 
			if (xhr.readyState == 4)
			{
				var risult = JSON.parse(xhr.responseText );

$("a[player_link=" + risult.player.player_id + "]").closest("tr").append("<td class='right align_right valore' style='padding-right:5px;color: gold;'><span>" + risult.player.age + "</span></td>");
			}
		}
		xhr.send(indix);
	}
	);	
}

Fin qui tutto ok.
Ho cercato di implementarla aggiungendo una semplice somma nella parte finale della funzione calcoloVal() trasformandola come segue:

function calcoloVal()
{
	$("tr.header").append("<th class='valore' title='' style='width: 60px; cursor: pointer;''>New Val</th>");

	var indix = "";
	$("div.player_name > a").each
	(function(e, player) 
	{
		indix = "player_id="+ $(player).attr("player_link");
		
		var xhr = new XMLHttpRequest(); 
		xhr.open("POST", "http://trophymanager.com/ajax/tooltip.ajax.php", true);
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.onreadystatechange = function()
		{ 
			if (xhr.readyState == 4)
			{
				var risult = JSON.parse(xhr.responseText );
				
				var playerAge = risult.player.age;
                var playerRoutine = 5;
				var somma = function(a,b){
     return (a + b);
}(playerRoutine,playerAge);		
				
				
				$("a[player_link=" + risult.player.player_id + "]").closest("tr").append("<td class='right align_right valore' style='padding-right:5px;color: gold;'><span>" + somma + "</span></td>");
			}
		}
		xhr.send(indix);
	}
	);	
}

Ma nulla:il valore restituito non è la somma delle 2 variabili,ma il susseguirsi dei 2 valori.
La cosa cambia se pongo "var playerAge = n" ovvero un numero naturale intero come succede all'altra variabile "playerRoutine" (=5).
Da quanto deduco,ma potrei benissimo sbagliarmi,la somma delle 2 variabili non avviene perchè "var playerAge = risult.player.age"
mi restituisce nella tabella si un valore numerico,ma che in realtà è solomente una stringa non "operabile".Giusto?
Sto provando a cambiare .attr() con .val() riuscendo solo a fare confusione.
C'è qualcuno in grado di aiutarmi sempre se quanto chiedo sia fattibile?
Vi ringrazio in anticipo sperando di non esser stato dispersivo nell'esposizione del problema
Luigi
 
Ultima modifica di un moderatore:
si, come hai scritto, stai concatenando due stringhe,
la somma la puoi fare
PHP:
var playerAge = risult.player.age;
var playerRoutine = 5;

var somma = +playerRoutine + +playerAge;

var somma = Number(playerRoutine) + Number(playerAge);

var somma = parseInt(playerRoutine, 10) + parseInt(playerAge, 10);

nel caso di numeri con virgola puoi usare "parseFloat()"
ciao
 
Grazie 1000 marino!
Sia per la celerità della risposta sia per la risposta in se :D e scusami per il ritardo nella risposta
Solo che... :( credevo di aver risolto la parte successiva,ma mi sbagliavo :(
Per farla breve alla "var somma" devo ulteriormente aggiungere un valore (da prelevare nella tabella dove ho inserito il valore ottenuto "New Val")
Le ho provate un pò tutte,principalmente però ho insisto con .each() e .attr() :sicuramente date le mie "solide basi" -.- sbaglierò a nell'indicare i parametri -.-
Ecco evidenziato il valore in questione da prelevare

HTML:
<div id="transfer_list">     //id tabella
	<table class="hover" cellspacing="0" cellpadding="0">
		<tbody>
		<tr class="header">   //identificazione colonne
			<th title="" style="width: 30px; cursor: pointer;"></th>
			<th class="left" title="" style="width: 200px; cursor: pointer;">Nome</th>
			<th title="" style="width: 30px; cursor: pointer;">Età</th>
			<th title="Posizione favorita" style="width: 56px; cursor: pointer;">PF</th>
			<th title="Raccomandazione" style="width: 100px; cursor: pointer;">Racc</th>
			
			          // Inizio Intestazione var da prelevare
			<th class="align_center" title="Indice Skill (ASI)" style="width: 82px; cursor: pointer;">ASI</th>
			          // 
			          // 
			<th title="" style="width: 82px; cursor: pointer;">Scadenza</th>
			</tr>
		<tr id="player_row_58901175">      //prima riga tabella
				<td class="align_center">...</td>
				<td class="left" nowrap="">
						<div class="player_name">
							<a href="/players/58901175/António/" player_link="58901175">António</a> 
							</div>
						    </td>
				<td class="align_center">...</td>
				<td class="align_center">...</td>
				<td class="align_center">...</td>
				      // Valore della riga da prendere come var
				<td class="align_center align_right">
							<span sort="80153">80,153</span>
							</td>
					//
					//		
				<td id="time_58901175" class="time-left-td align_center">...</td>
				</tr>
				// 2° 3° riga e così via
		<tr id="player_row_60841378">...</tr>   
		<tr id="player_row_57835321">...</tr>	
			    </tbody>
		      </table>
		    </div>

Riusciresti(/ste) a darmi l'ennesima mano anke per questo?
Grazie sempre e cmq
Luigi
 
Ultima modifica di un moderatore:
ci sono vari modi per passare il valore (i valori) a javascript,

in particolare se html (i valori) fosse generato con il supporto di php,
si potrebbe passare un' array che contiene il valore di "Antonio" e di tutte righe successive, semplificando molto,

altrimenti javascript deve recuperare i valori dalle "variabili" contenute in html,
"variabili" che devono essere identificate da un "nome" e/o "id"
HTML:
<td class="align_center align_right">
 <span sort="80153" id="valore1" name="valore1">80,153</span>
c'è però quel "sort" e temo che la variazione possa produrre effetti negativi
ciao
Marino
 

Discussioni simili