J'écris du code HTML pour une servlet Java. J'écris d'abord le code en html/js afin que je puisse déboguer sur quoi je travaille, puis en faire une chaîne java et la mettre dans ma servlet. Mon problème est que le code fonctionne bien quand je l'affiche en ff à partir d'un fichier html local, mais quand je l'affiche sur mon servlet java, ça ne marche pas car le js n'est pas appelé. Ce que j'ai fait a été de formater le code html que mon servlet a généré afin que ce ne soit pas tout sur une seule ligne et de réexécuter le code. Cette fois ça a marché. J'ai copié ce code de travail dans une barre d'adresse du navigateur pour que ce soit sur une seule ligne, et copié ce code dans le script de mon fichier html. Maintenant, lorsque le code précédemment utilisé est sur une seule ligne, cela ne fonctionne pas.Pourquoi ce code JS ne fonctionnera-t-il pas si tout est sur la même ligne?
Voici la JS format:
var sMax
var holder;
var preSet;
var rated;
var request;
function rating(num){
sMax = 0;
for(n=0; n<num.parentNode.childNodes.length; n++){
if(num.parentNode.childNodes[n].nodeName == "A"){
sMax++;
}
}
if(!rated){
s = num.id.replace("_", '');
a = 0;
for(i=1; i<=sMax; i++){
if(i<=s){
document.getElementById("_"+i).className = "on";
document.getElementById("rateStatus").innerHTML = num.title;
holder = a+1;
a++;
}else{
document.getElementById("_"+i).className = "";
}
}
}
}
function off(me){
if(!rated){
if(!preSet){
for(i=1; i<=sMax; i++){
document.getElementById("_"+i).className = "";
document.getElementById("rateStatus").innerHTML = me.parentNode.title;
}
}else{
rating(preSet);
document.getElementById("rateStatus").innerHTML = document.getElementById("ratingSaved").innerHTML;
}
}
}
function rateIt(me){
if(!rated){
document.getElementById("rateStatus").innerHTML = document.getElementById("ratingSaved").innerHTML + " "+me.title;
preSet = me;
rated=1;
sendRate(me);
rating(me);
}
}
function sendRate(sel){
alert("Your rating was: "+sel.title);
addRating("rating", "?truck=kogibbq?rating="+ sel.id);
}
function addRating(servletName, servletArguments){
var servlet = servletName;
var arg = servletArguments
var req = servlet + arg;
alert(req);
addrequest(req);
request.onreadystatechange = function(){
alert("response received");
}
}
function addrequest(req) {
try {
request = new XMLHttpRequest();
}catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
alert("XMLHttpRequest error: " + e);
}
}
request.open("GET", element, true);
request.send(null);
return request;
}
Merci.
Il manque des points-virgules dans de nombreux endroits, chaque instruction devrait se terminer par un point-virgule, spécialement si vous l'exécutez dans un minifiche. PhpStorm peut vous avertir des points-virgules manquants, ou simplement utiliser JSLint comme mentionné. –