使用自定义关键字在javascript中设置链接

Using custom keywords to set link in javascript

本文关键字:设置 链接 javascript 自定义 关键字      更新时间:2023-09-26

脚本含义更高级,但我将其浓缩为以下问题:

简而言之,我有一些关键字变量设置与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>

问题在于**之间,因为脚本必须识别该值对应于变量并使用该值。然而,目前我只得到输入值。顺便说一下,我不能使用表单或重新加载页面。

任何想法吗?

p。这个脚本不是用来运行的,而是用来说明我的观点:http://jsfiddle.net/UhgKG/3/

部分原因是当有其他方法时,我避免了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>
<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>