11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'ai un souci pour récupérer les valeurs d'un split afin de les utiliser dans une fonction.

var capId = requete.responseText.split(',');
			alert (capId[0], capId[1]);


Lorsque je fais une alerte sur capId[0] ou capId[1], ça m'affiche bien une valeur, mais si j'essaie les deux en même temps, comme si dessus, ça ne m'affiche que le 1er.
Du coup ma fonction
flash (capId[0], capId[1]);
ne peu fonctionner.

Je ne comprends pas, dans un autre projet, je n'avais aucun souci avec les splits.

Merci de votre aide !

Je vous mets le code entier de la page :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Train</title>
</head>
<%@page import="models.Select" %>
<body>

<Script>
var requete;

function interro()
{

	if (window.XMLHttpRequest) 
	{
		requete = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) 
	{
		requete = new ActiveXObject("Microsoft.XMLHTTP");
	}
	requete.onreadystatechange = majIHMtxt;
	
	requete.open('GET', 'LireInfo?ck=' + (new Date()).getTime(), true);

	requete.send(null);
	
}

function majIHMtxt() 
{
	if (requete.readyState == 4) 
	{
		if (requete.status == 200) 
		{
			var capId = requete.responseText.split(',');
			alert (capId[0], capId[1]);
			flash (capId[0], capId[1]);
		}
	}
}
setInterval('interro()', 500);
</Script>

	<%@ include file="/Jsps/Trace.jsp" %>
	
<script>
function flash(cpt, etat)
{
	switch (etat)
	{
	case "0" : document.getElementById(cpt).setAttribute("fill", "white");
	break;
	case "1" : document.getElementById(cpt).setAttribute("fill", "orange");
	break;
	case "2" : document.getElementById(cpt).setAttribute("fill", "yellow");
	break;
	case "3" : document.getElementById(cpt).setAttribute("fill", "red");
	break;
	case "4" : document.getElementById(cpt).setAttribute("fill", "green");
	break;
	case "5" : document.getElementById(cpt).setAttribute("fill", "blue");
	break;
	case "6" : document.getElementById(cpt).setAttribute("fill", "white");
	}
	document.getElementById(cpt).setAttribute("fill", "orange");
	setTimeout(function couleurBack (){document.getElementById(cpt).setAttribute("fill", "white");}, 1000);
}
flash();
</script>

</body>
</html>

Modifié par Grichka (13 Jun 2014 - 08:57)
salut,
je n'ai pas vu ton code et je ne vois pas trop ce que tu cherches à faire mais si tu veux afficher tes valeurs c'est

alert (capId[0]+capId[1]);

et non avec une virgule
Bonjour,
merci de ton aide.

En fait, je dois récupérer la réponse d'une servlet. Elle se trouve être sous cette forme : INFRAROUGE1,2
Je souhaite la spliter à la virgule et récupérer les 2 valeurs (INFRAROUGE1 et 2) pour les utiliser dans une fonction. L'alerte c'était juste pour tester.

J'essaie ta solution dans la matinée merci !
La fonction alert ne prend qu'un paramètre. Donc c'est normal que le deuxième soit purement et simplement ignoré.
Oui en effet.
Je viens de résoudre mon problème.

En fait, comme ma fonction flash() ne marchait pas, j'ai voulu vérifier si le split fonctionnait en testant les valeurs avec un alert(). Et comme celui-ci je ne m'affichais qu'un paramètre, j'en avais déduis hâtivement que ma fonction flash() ne devait en recevoir qu'une aussi d'où le non-fonctionnement.

La fonction recevait bien les 2 paramètres, le souci venait en fait de la dernière action de la fonction : il fallait la mettre dans le switch en default !

Merci d'avoir pris le temps de vous pencher sur mon problème !