javascript - 将随机字母显示为属性值而不是数组项

标签 javascript html css

所以我试图用 javascript 生成一个注册框,我一直设法这样做,直到我偶然发现了一个奇怪的错误。该脚本在 HTML 中输出:

<input type="f" name="i" alt="r" placeholder="s">

代替:

<input type="email" name="regemail" alt="email" placeholder="What's your email?">

其他 2 个输入也是如此。为什么会这样?我试图寻找任何错误,但控制台没有给我任何错误,我也找不到我编写的代码有任何问题。感谢您的帮助。

var firstInput = ["email", "regemail", "email", "What's your email?"];
    var secondInput = ["password", "regpassword", "password", "Choose a password"];
    var thirdInput = ["password", "confirmpassword", "confirmpassword", "Confirm password"];
    var types = ["type", "name", "alt", "placeholder"];
    var inputNumber = ["firstInput", "secondInput", "thirdInput"];
    var container = document.getElementById('usp-container');

    function register() {

    var div = document.createElement('div');
    div.setAttribute('id', "register-popup");
    container.appendChild(div);
    
    var form = document.createElement('form');
    form.setAttribute('method', "post");
    form.setAttribute('action', "processregistration.php");
    div.appendChild(form);
    
    
        for (i = 0; i < 3; i++) {
            
        function makeInputs(inputs) {
            
        var tableRow = document.createElement('tr');
        form.appendChild(tableRow);
        var tableData = document.createElement('td');
        tableRow.appendChild(tableData);
        var input = document.createElement('input');
        
        for (j = 0; j < 4; j++) {
            
            input.setAttribute(types[j], inputs[j]);
        }
            
        tableData.appendChild(input);
        
        }
            
        makeInputs(inputNumber[i]);
    }
    
    }

    register();

最佳答案

变量名在一个数组中

var firstInput = ["email", "regemail", "email", "What's your email?"];

var inputNumber = ["firstInput", "secondInput", "thirdInput"];

然后您将遍历这些变量名,并尝试使用

获取该变量的值
inputNumber[0]

这会得到字符串"firstInput"不是一个数组,所以当你这样做的时候

inputNumber[0][0]

您得到字符 "f"不是数组中的值 "email"

要使用字符串来引用变量,您必须使用括号表示法,并且在全局范围内看起来像

window[inputNumber[0]][0];

这确实不是一个很好的获取变量的方法

FIDDLE

你最好有一个对象

var values = {
    firstInput  : ["email", "regemail", "email", "What's your email?"],
    secondInput : ["password", "regpassword", "password", "Choose a password"],
    thirdInput  : ["password", "confirmpassword", "confirmpassword", "Confirm password"]
}

然后用键名引用数组

values[inputNumber[0]][0]

FIDDLE

关于javascript - 将随机字母显示为属性值而不是数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26025110/

相关文章:

javascript - javascript "for x in array"保证订单吗?

Javascript 没有获取属性值

HTML/CSS 基本表格样式

javascript - 带有手动控件的 slider 不会自动播放 - 可能是 setInterval 行为的问题?

javascript - 如何在不隐藏箭头的情况下隐藏幻灯片上的溢出?

javascript - 如何在 Windows 上为 ios 构建(react-native)?

javascript - 弹出不覆盖整个页面的背景色

javascript - Div 不会自动滚动以显示新消息

twitter-bootstrap - 如何在大屏幕上将小网页的页脚放在底部

css - sass如何实例化一个由@if设置的空变量