0

我创建了 3 个变量 a、b、c。我已经为 a 和 b 赋值,并且还创建了一个文本框。我想要做的是在文本框中输入变量的名称并单击按钮,然后文本框应该显示分配给该变量的值。这可能很简单,但我不知道我做错了什么。

这是小提琴

<html>
    <head>
        <script>
            function display(){
                var a = 2;
                var b = 3;
                var c = document.getElementById("b1").value;       
                document.getElementById("demo").innerHTML=c;
            }
        </script>
    </head>
    <body>

        <input type="text" id="b1">
        <button type="button" onclick="display()">Display</button>
        <p id="demo">Update Value.</p>

    </body>
</html> 

​</p>

4

4 回答 4

1

您最简单的选择是将变量分配给对象,如下所示:

var vars;

function display() {
    var value = document.getElementById("b1").value;
    vars = {
        a: 2,
        b: 3,
        c: value
    }
    if (vars.hasOwnProperty(value)) { // If the entered value is a variable name
        document.getElementById("demo").innerHTML = vars[value]; // Display the variable
    } else { // Otherwise
        document.getElementById("demo").innerHTML = value; // display the value
    }
}

工作示例

可以用这个if/else替换,使它更短一点:

document.getElementById("demo").innerHTML = vars.hasOwnProperty(value) // If
                                                ? vars[value]          // Then
                                                : vars.c;              // Else
于 2012-12-27T11:54:57.200 回答
0

试试这个方法:

<html>
    <head>
        <script>
            function display(){
                var a = 2;
                var b = 3;
                var c = document.getElementById("b1").value;
                if(c==a){
                    document.getElementById("demo").innerHTML='a';
                }
                if(c==b){
                    document.getElementById("demo").innerHTML='b';
                }
            }
        </script>
    </head>
    <body>
        <input type="text" id="b1">
        <button type="button" onclick="display()">Display</button>
        <p id="demo">Update value.</p>
    </body>
</html>

演示

于 2012-12-27T11:55:13.973 回答
0

您正在寻找的是 eval() 方法(不推荐使用快速谷歌搜索)。

    <script>
        function display(){
            var a = 2;
            var b = 3;
            var c = document.getElementById("b1").value;       
            document.getElementById("demo").innerHTML=(eval(c));
            // if user enters b in the input field, then the html in demo will be 3
            // if user enters a in the input field, then the html in demo will be 2
        }
    </script>

再次,不推荐!

于 2012-12-27T12:02:46.627 回答
0

如果您直接在您script的 -element 中声明变量,它们将作为 -object 的属性创建window并且可以这样访问。因此,只需像下面这样更新您的脚本以显示变量的内容:

<html>
    <head>
        <script>
            var a = 2, b = 3;
            function display() {
                var strVarName = document.getElementById('b1').value;
                if(window.hasOwnProperty(strVarName)) {
                    document.getElementById('demo').innerHTML = window[strVarName];
                } else {
                    document.getElementById('demo').innerHTML = 'Variable ' + strVarName + ' does not exist.'
                }
            }
        </script>
    </head>
    <body>
        <input type="text" id="b1">
        <button type="button" onclick="display()">Display</button>
        <p id="demo">Update Value.</p>
    </body>
</html>

如果您在显示函数中声明变量,这将不起作用,但是如果此代码要在系统中用于除这个简单函数之外的任何内容,这似乎不是您会做的事情。

于 2012-12-27T12:03:31.417 回答