javascript - 从本地存储到数组的名称到随机名称选择器

标签 javascript html

我正在尝试从本地存储中获取的名称数组中创建一个随机名称选择器,当我使用谷歌浏览器检查它时,似乎不会弹出错误。

这是我的代码:

function getUserData() {
    var Detail = localStorage.getItem("Detail");

    if (Detail == null) {
        Detail = []; // on new computer, create the local storage item } else { 
        Detail = JSON.parse(Detail); // convert from string to array
    }

    for (var i = 0; i < Detail.length; i++) { // loop through the array
        var row = document.getElementById("Detail").insertRow(-1);
        var cell1 = row.insertCell(0);
        var cell2 = row.insertCell(1);
        var cell3 = row.insertCell(2);
        var cell4 = row.insertCell(3);
        var cell5 = row.insertCell(4);
        cell1.innerHTML = Detail[i].name;
        cell2.innerHTML = Detail[i].admin;
        cell3.innerHTML = Detail[i].email;
        cell4.innerHTML = Detail[i].contact;
        cell5.innerHTML = Detail[i].country;
    }
}

function NamePicker() {
    var Detail = localStorage.getItem("Detail");

    if (Detail == null) {
        Detail = []; // on new computer, create the local storage item
    } else {
        Detail = JSON.parse(Detail); // convert from string to array
    }

    // copy names
    var nameArray = [];

    for (var i = 0; i < Detail.length; i++) { // loop through the array
        nameArray[i] = Detail[i].name;
    }

    for (var i = 0; i < Detail.length; i++) { // loop through the array
        // get a number from random num generator %numArray.length
        name = nameArray[num];

        while (nameArray.length < 11) {
            var randomnumber = Math.max(Math.ceil(Math.random() * 11))
            var found = false;
            for (var i = 0; i < nameArray.length; i++) {
                if (name[i] == randomnumber) {
                    found = true;
                    break
                }
            }
            if (!found) name[nameArray.length] = randomnumber;
        }

        // Display using modal
        alert(name);

        // remove using splice(num, 1);
        name.splice(num, 1);
        document.getElementById("Detail").innerHTML = name;
    }
}

问题是 num 似乎没有从列表中删除该名称,并且警报功能没有弹出...... 我真的很感谢您的帮助,提前致谢...

最佳答案

我在你的第二个函数中发现了一些问题;您在三个 for 循环中使用局部变量 i ,我认为在其中一个循环中您打算使用 num 。另外,我在第二个 for 循环中将 Detail.length 更改为 nameArray.length,因为您正在遍历 nameArray。我还更改了第三个 for 循环以使用 z 而不是 i。

function NamePicker() {
var Detail = localStorage.getItem("Detail");

if (Detail == null) {
    Detail = []; // on new computer, create the local storage item
} else {
    Detail = JSON.parse(Detail); // convert from string to array
}

// copy names
var nameArray = [];

for (var i = 0; i < Detail.length; i++) { // loop through the array
    nameArray[i] = Detail[i].name;
}

for (var num = 0; num < nameArray.length; num++) { // loop through the array
    // get a number from random num generator %numArray.length
    name = nameArray[num];

    while (nameArray.length < 11) {
        var randomnumber = Math.max(Math.ceil(Math.random() * 11))
        var found = false;
        for (var z = 0; z < nameArray.length; z++) {
            if (name[z] == randomnumber) {
                found = true;
                break
            }
        }
        if (!found) name[nameArray.length] = randomnumber;
    }

    // Display using modal
    alert(name);

    // remove using splice(num, 1);
    name.splice(num, 1);
    document.getElementById("Detail").innerHTML = name;
}
}

希望有帮助!

关于javascript - 从本地存储到数组的名称到随机名称选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38802358/

相关文章:

php - POST 数据重定向页面失败

html - 使用 VBA 从网站提取数据时遇到问题

javascript - 只是尝试从数组访问对象的字段,但我无法管理它

javascript - a && b && c VS if - 性能上有什么区别?

javascript - 用jQuery询问<div>是否有背景图片?

javascript - jquery 焦点没有第二次触发

javascript - 当没有上传视频时,html5 video 标签会显示一个空的视频框。我怎样才能隐藏这个空盒子?

html - 单击 ul li 菜单时转换不起作用

html - 防止 HTML Tidy 剥离 PHP

.net - 在 PostBack 上重定向 UpdatePanel 内的父框架