2012-10-25 163 views
1

我想使链接工作,我们点击使用JavaScript更改网站的语言。下面是HTML代码:JavaScript代码不能正常工作IE8

'<form action="" method="post" name="currlang">'. 
    '<input type="hidden" name="languageval" value="'.$session->value("language").'"/>'. 
    '<a onclick="langa(this, \'en\');" class="langs'.($session->value("language")=='en'?" active":"").'" id="en"></a>'. 
    '<a onclick="langa(this, \'it\');" class="langs'.($session->value("language")=='it'?" active":"").'" id="it"></a>'. 
    '<a onclick="langa(this, \'pl\');" class="langs'.($session->value("language")=='pl'?" active":"").'" id="pl"></a>'. 
'</form>'. 

这里的JavaScript:

function langa(obj, valu) { 
    document.getElementsByName("languageval")[1].value=valu; 
    document.getElementsByName('currlang')[1].submit(); 
} 

该脚本适用于新的浏览器(Firefoxe,歌剧,铬,IE9),但在IE8测试时,它提供了一个优良错误:

"'document.getElementsByName(...).1' is null or not an object".

经过一番研究,我发现,getElementsByName()不受IE8及以上,也许解决办法是使用jQuery支持,这是我需要帮助。 我该如何使用jQuery或没有它的工作?

+2

您只有一个名为'languageval'的输入,因此其索引是[[0]',而不是'[1]' –

+0

,您可以随时在输入上放置一个ID并使用getElementById。确保ID是唯一的 – Huangism

+0

,因为你在标签中指定了jquery,你怎么没有在你的代码中实际使用它? – Spudley

回答

1

您可以尝试使用IDclass来达到同样的目的,而不是name

例子:

<div id="foo">This is id of foo</div> 
<div class="choo">This is class of choo</div> 

这时如果使用ID然后使用:

document.getElementById('foo'); 

class使用:

document.getElementsByClassName('choo'); 

我希望这有助于!

+0

感谢您的帮助,但它比mikeswright49只是刷新了页面。 – PLM

+0

你能发表更多的代码吗?当你的网站看起来很难明白它吗?它只是一个非常小的部分 – pathurs

-1

为此以您希望切换名称为Id的方式工作。

<script type="text/javascript" language="javascript"> 
    function langa (obj, valu){ 
     $("#languageval").val(valu); 
     $("#currlang").submit(); 
    } 
</script> 

#将拉动元素与该Id和val()是该元素的值的get/set。

编辑:添加的类型和语言标记

+0

可能不会工作正确,因为OP使用'name'而不是'id'属性。 –

+0

他说他想使用JQuery,所以我给了他JQuery的方式,但这就是为什么我说他需要在第一行中将名称切换到ID。 – mikeswright49

+0

谢谢你mikeswright49。我已经尝试过您的代码和页面刷新,但语言不会切换。 – PLM