2011-09-24 66 views
0

脚本影响是更先进的,但我已经凝结下来到这个如下问题:使用自定义关键字设置链接在javascript

简而言之我有使用JavaScript设置一些关键字变量。这些关键字变量包含URL。我需要的是当一个人输入一个关键字时,他会被带到一个特定的URL。我创建说明我的问题示例页面:

<a href="" class="link">LINK</a><br> 
<input type="text" class="text" value="hallo" /> 
<input type="button" onclick="check();" value="Click ME"> 

<script type="text/javascript"> 
function check() { 
    var key1 = "some_link1.com"; 
    var key2 = "some_link2.com"; 
    var key3 = "some_link3.com"; 

    var l = document.getElementsByClassName("link")[0]; 
    var t = document.getElementsByClassName("text")[0]; 
    if (t.value == "key1" || t.value == "key2" || t.value == "key3") { 
     l.href = t.value; 
     alert(t.value); 
    } }</script> 

问题在于之间的**,因为脚本必须认识到,值对应变量和使用泰德值来代替。但是目前我只能获得输入值。顺便说一句,我不能使用表单或重新加载页面。它必须发生“现场”。

有什么想法?

PS。脚本并不意味着跑,而是想说明我的观点: http://jsfiddle.net/UhgKG/3/

+1

'getElementsByClassName'给你一个数组不是一个元素,那么你的't.value'会是* undefined * –

+0

我看到了,请取消因为这不是问题。 –

回答

0

部分原因是因为我避免eval()当有其他的方式,而且还因为它只是似乎更清洁,更可扩展的,是更少的代码,我会做这样的一个对象的查找,而不是独立变量,多if试验和eval

<a href="" id="link">LINK</a><br> 
<input type="text" id="text" value="hallo" /> 
<input type="button" onclick="check();" value="Click ME"> 

<script type="text/javascript"> 
function check() { 
    var keys = { 
     key1: "some_link1.com", 
     key2: "some_link2.com", 
     key3: "some_link3.com" 
    }; 

    var l = document.getElementById("link"); 
    var t = document.getElementById("text").value; 
    if (t in keys) { 
     l.href = keys[t]; 
     alert(t); 
    } 
} 
</script> 
0
<a href="" id="link">LINK</a><br> 
<input type="text" id="text" value="hallo" /> 
<input type="button" onclick="check();" value="Click ME"> 

<script type="text/javascript"> 
function check() { 
    var key1 = "some_link1.com"; 
    var key2 = "some_link2.com"; 
    var key3 = "some_link3.com"; 

    var l = document.getElementById("link"); 
    var t = document.getElementById("text").value; 
    if (t == "key1" || t == "key2" || t == "key3") { 
     l.href = eval(t); // no risk as we run this line if and only if the value is one of the options defined in the if 
     alert(t); 
    } 
} 
</script> 
+0

'eval()'...是的,这是一个坏主意。可以使用关联数组。 –

+0

例如:http://jsfiddle.net/6dGKG/ –

+0

虽然,我们可以争辩说,访问者只能对他的装载的页面副本做恶作剧,如果他选择,让他享受它;) –