Javascript 更改表单的语言

Javascript 更改表单的语言,javascript,forms,Javascript,Forms,我有一个默认语言设置为英语的表单。在页面顶部,我有4种不同语言(英语、法语、意大利语、德语)的链接,我想做的是,一旦用户单击其中一种语言,它就会将表单中输入标签的文本更改为该特定语言。我已经将这些语言存储在4个单独的文本文件中,但是我的JavaScript中有些东西不起作用。我个人认为这是一个语法错误,或者是一个我没有注意到的小编码错误 HTML Javascript function init(){ var language = document.getElementsByTagName("a

我有一个默认语言设置为英语的表单。在页面顶部,我有4种不同语言(英语、法语、意大利语、德语)的链接,我想做的是,一旦用户单击其中一种语言,它就会将表单中输入标签的文本更改为该特定语言。我已经将这些语言存储在4个单独的文本文件中,但是我的JavaScript中有些东西不起作用。我个人认为这是一个语法错误,或者是一个我没有注意到的小编码错误

HTML

Javascript

function init(){
var language = document.getElementsByTagName("a");

for (var i = 0, i < language.length; i++){
    language[i].onclick = processRequest;
}
}

function processRequest(e) {
evt = e || window.event;
target = evt.target || evt.srcElement;
request.onreadystatechange = displayData;
request.open('GET', target.id+".txt", true);
request.send(null);
}

function displayData() {
if (request.readyState == 4 && request.status == 200)
    var fields = request.responseText.split(",");
    var labels = document.getElementsByTagName("label");

    for (var i = 0, i < labels.length; i++){
        labels[i].innerText = fields[i];
    }
}


window.onload = init();
函数init(){
var language=document.getElementsByTagName(“a”);
for(var i=0,i
如果您上面发布的代码正是您使用的代码,请检查for循环并更正参数

for (var i = 0, i < labels.length; i++)
for(变量i=0,i
还有一个错误:
找不到变量:request

未定义“request”变量

function processRequest(e) {
    evt = e || window.event;
    target = evt.target || evt.srcElement;
    var request = new XMLHttpRequest();             <<-- added this
    request.onreadystatechange = displayData(request);
    request.open('GET', target.id+".txt", true);
    request.send(null);
}
编辑:
另外,如果javascript位于页面的
部分,请将
init
函数调用更改为:
window.onload=init(不带括号)。否则,将在加载文档之前立即执行
init
函数。

您没有创建ajax请求。记住将javascript放在页面的末尾,并将其更改为

var request;
function init() {
    var language = document.getElementsByTagName("a");
    for (var i = 0; i < language.length; i++) {
        language[i].onclick = processRequest;
    }
}

function processRequest(e) {
    evt = e || window.event;
    target = evt.target || evt.srcElement;
    request = new XMLHttpRequest();
    request.onreadystatechange = displayData;
    request.open('GET', target.id + ".txt", true);
    request.send(null);
}

function displayData() {
    if (request.readyState == 4 && request.status == 200) {
        var fields = request.responseText.split(",");
        var labels = document.getElementsByTagName("label");
        for (var i = 0; i < labels.length; i++) {
            labels[i].innerText = fields[i];
        }
    }
}
var请求;
函数init(){
var language=document.getElementsByTagName(“a”);
for(var i=0;i
+1同意。使用分号代替逗号<代码>SyntaxError:意外标记“有点帮助,但不是很好”。我的警报现在显示了,但是表单仍然没有改变语言。我的警报无论放在哪里,开始还是结束都有效。所以我想这排除了语法错误……不幸的是,即使进行了这些更改,它仍然不起作用。警报仍然适用于所有地方。这可能是我的窗口加载,还是我如何设置我的所有功能?我真的不知道了:(我建议您检查浏览器的错误控制台。它有助于跟踪javascript错误。让我知道您在那里看到了什么。Firefox中完全没有显示任何错误。可能是因为我没有正确调用我的文本文件吗?我用表单中相同的ID保存了它们,以便我可以将.txt添加到我的javascript中。我编辑的代码工作正常,但是我在这里发布时遇到了一些错误,现在您可以试试。解决方案是什么?在这里,
request
变量是全局的。您以前没有传递
request
变量吗?问题是javascript在文档中的位置吗?request是全局变量。在这段代码中,调用了processRequest函数在displayData函数之前。换句话说,displayData函数在processRequest函数内部调用,在ajax请求创建request=newxmlhttprequest()之后调用;request.onreadystatechange=displayData;@showdevYes,+1我同意。这些似乎与我建议的更改非常相似。我只是想知道是什么具体解决了OP的问题。
function processRequest(e) {
    evt = e || window.event;
    target = evt.target || evt.srcElement;
    var request = new XMLHttpRequest();             <<-- added this
    request.onreadystatechange = displayData(request);
    request.open('GET', target.id+".txt", true);
    request.send(null);
}
function displayData(request) {
    if (request.readyState == 4 && request.status == 200) {
        var fields = request.responseText.split(",");
        var labels = document.getElementsByTagName("label");

        for (var i = 0; i < labels.length; i++) {
            labels[i].innerText = fields[i];
        }
    }
}
var request;
function init() {
    var language = document.getElementsByTagName("a");
    for (var i = 0; i < language.length; i++) {
        language[i].onclick = processRequest;
    }
}

function processRequest(e) {
    evt = e || window.event;
    target = evt.target || evt.srcElement;
    request = new XMLHttpRequest();
    request.onreadystatechange = displayData;
    request.open('GET', target.id + ".txt", true);
    request.send(null);
}

function displayData() {
    if (request.readyState == 4 && request.status == 200) {
        var fields = request.responseText.split(",");
        var labels = document.getElementsByTagName("label");
        for (var i = 0; i < labels.length; i++) {
            labels[i].innerText = fields[i];
        }
    }
}