javascript - 如果这段 JS 代码都在同一行,为什么它不起作用?

标签 javascript html dom-events

我正在为 Java servlet 编写 HTML 代码。我首先在 html/js 中编写代码,以便可以调试我正在处理的内容,然后将其设为 Java 字符串并将其放入我的 servlet 中。我的问题是,当我在 Firefox 中从本地 html 文件查看代码时,代码工作正常,但是当我在 Java servlet 上查看代码时,代码无法工作,因为没有调用 js。

我所做的是格式化我的 servlet 生成的 html,这样它就不会全部在一行上,然后再次运行代码。这次成功了。我将此工作代码复制到浏览器地址栏中,以便它全部位于一行中,然后将该代码复制回我的 html 文件中的脚本中。现在,当以前有效的代码位于一行时,它就不起作用了。

这是格式化的 JS:

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;
}

最佳答案

您缺少分号:

var sMax

var arg = servletArguments

关于javascript - 如果这段 JS 代码都在同一行,为什么它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2452805/

相关文章:

javascript - 在同一文档中引用 $id 时,如何修复 "Can' t resolve reference"错误?

javascript - 如何隐藏SVG中超出其下指定SVG的部分?

html - 不能在不弄乱包含 H2 位置的情况下移动 Div 位置

html - 使用 jquery 在分页时激活下一个/上一个按钮

javascript - IE8事件坐标

javascript - 插件方法 - 这里有什么魔力?

javascript - iFrame 内的页面顶部 - 跨域

html - 在虚线跨度上工作,我不知道如何使它成为同一条线

javascript - Mobile Safari 的日期/时间类型输入字段触发了哪些事件?

更改选项卡时 JavaScript 在 iPad 上暂停 : is there a way to know when coming back?