web需求记录

news2025/1/16 17:42:46

需求1:根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option 是动态增加的(也就是那个选择框里面的东西是根据后端传过来的值动态增加的),当select选择设备名字时,下面一个框显示对应mac的地址

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>选择设备和显示MAC地址</title>
</head>
<body>
    <label for="deviceSelect">设备选择:</label>
    <select id="deviceSelect" onchange="updateMacAddress()">
        <!-- options will be added dynamically -->
    </select>

    <div id="macAddressDisplay">MAC地址:未选择设备</div>

    <script>
        // 后端传递的设备名和对应的MAC地址
        const deviceData = {
            'DESKTOP-4DQRGQB': 'e0:be:03:74:40:0b',
            'iQOO-8': 'b0:33:66:38:c3:25',
            'iQO0-7': 'b0:33:66:38:c3:2',
            'iQOO-6': 'b0:33:66:38:c3:3',
            // 添加更多设备的MAC地址
        };

        // 获取选择设备的select元素
        const deviceSelect = document.getElementById('deviceSelect');

        // 初始化select中的options
        for (const device in deviceData) {
            const option = document.createElement('option');
            option.value = device;
            option.textContent = device;
            deviceSelect.appendChild(option);
        }

        // 更新MAC地址显示框的函数
        function updateMacAddress() {
            // 获取选择的设备名
            const selectedDevice = deviceSelect.value;

            // 获取对应设备的MAC地址
            const macAddress = deviceData[selectedDevice] || '未知';

            // 更新MAC地址显示框的内容
            document.getElementById('macAddressDisplay').textContent = `MAC地址:${macAddress}`;
        }

        // 初始页面加载时调用一次,确保显示默认值
        updateMacAddress();
    </script>
</body>
</html>

效果如下:

需求2:根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option是动态增加的,当select选择设备名字时,下面一个框显示对应mac的地址,在mac地址下面有2个输入框,分别是上行速率和下行速率,需要我们手动输入,然后可以提交post请求。

代码如下:

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>选择设备和显示MAC地址、速率</title>
</head>
<body>
    <label for="deviceSelect">设备选择:</label>
    <select id="deviceSelect" onchange="updateDeviceInfo()">
        <!-- options will be added dynamically -->
    </select>

    <div>
        <p id="macAddressDisplay">MAC地址:未选择设备</p>
        <label for="uploadRate">上行速率:</label>
        <input type="text" id="uploadRate">
        <label for="downloadRate">下行速率:</label>
        <input type="text" id="downloadRate">
    </div>

    <div>
        <button onclick="submitPostRequest()">提交</button>
    </div>

    <script>
        // 后端传递的设备名和对应的MAC地址
        const deviceData = {
            'DESKTOP-4DQRGQB': 'e0:be:03:74:40:0b',
            'iQOO-8': 'b0:33:66:38:c3:25',
            // 添加更多设备的MAC地址
        };

        // 获取选择设备的select元素
        const deviceSelect = document.getElementById('deviceSelect');

        // 初始化select中的options
        for (const device in deviceData) {
            const option = document.createElement('option');
            option.value = device;
            option.textContent = device;
            deviceSelect.appendChild(option);
        }

        // 更新设备信息的函数
        function updateDeviceInfo() {
            // 获取选择的设备名
            const selectedDevice = deviceSelect.value;

            // 获取对应设备的MAC地址
            const macAddress = deviceData[selectedDevice] || '未知';

            // 更新MAC地址显示框的内容
            document.getElementById('macAddressDisplay').textContent = `MAC地址:${macAddress}`;
        }

        // 提交POST请求的函数
        function submitPostRequest() {
            // 获取用户输入的值
            const uploadRate = document.getElementById('uploadRate').value;
            const downloadRate = document.getElementById('downloadRate').value;

            // 获取选择的设备名
            const selectedDevice = deviceSelect.value;

            // 获取对应设备的MAC地址
            const macAddress = deviceData[selectedDevice] || '未知';

            // 构造要提交的数据
            const postData = {
                device: selectedDevice,
                mac: macAddress,
                uploadRate: uploadRate,
                downloadRate: downloadRate
            };

            // 模拟提交POST请求,你需要将下面的部分替换为实际的后端API请求
            console.log('模拟提交POST请求:', postData);
            // 此处可以使用fetch或其他AJAX方法向后端发送POST请求
        }
    </script>
</body>
</html>

运行效果:

需求3:点击增加按钮的时候,会根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option是动态增加的,当select选择设备名字时,下面一个框显示对应mac的地址,在mac地址下面有2个输入框,分别是上行速率和下行速率,需要我们手动输入,然后可以提交post请求,点击取消按钮就会折叠起来,不提交请求。

代码如下:

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>选择设备和显示MAC地址、速率</title>
    <style>
        .hidden {
            display: none;
        }
    </style>
</head>
<body>
    <label for="deviceSelect">设备选择:</label>
    <select id="deviceSelect" onchange="updateDeviceInfo()">
        <!-- options will be added dynamically -->
    </select>

    <div>
        <p id="macAddressDisplay">MAC地址:未选择设备</p>

        <div id="rateInputs" class="hidden">
            <label for="uploadRate">上行速率:</label>
            <input type="text" id="uploadRate">
            <label for="downloadRate">下行速率:</label>
            <input type="text" id="downloadRate">
        </div>
    </div>

    <div>
        <button onclick="expandInputs()">增加</button>
        <button onclick="collapseInputs()">取消</button>
        <button onclick="submitPostRequest()">提交</button>
    </div>

    <script>
        // 后端传递的设备名和对应的MAC地址
        const deviceData = {
            'DESKTOP-4DQRGQB': 'e0:be:03:74:40:0b',
            'iQOO-8': 'b0:33:66:38:c3:25',
            // 添加更多设备的MAC地址
        };

        // 获取选择设备的select元素
        const deviceSelect = document.getElementById('deviceSelect');

        // 初始化select中的options
        for (const device in deviceData) {
            const option = document.createElement('option');
            option.value = device;
            option.textContent = device;
            deviceSelect.appendChild(option);
        }

        // 更新设备信息的函数
        function updateDeviceInfo() {
            // 获取选择的设备名
            const selectedDevice = deviceSelect.value;

            // 获取对应设备的MAC地址
            const macAddress = deviceData[selectedDevice] || '未知';

            // 更新MAC地址显示框的内容
            document.getElementById('macAddressDisplay').textContent = `MAC地址:${macAddress}`;

            // 显示输入框
            document.getElementById('rateInputs').classList.remove('hidden');
        }

        // 增加按钮的点击事件处理函数
        function expandInputs() {
            // 显示输入框
            document.getElementById('rateInputs').classList.remove('hidden');
        }

        // 取消按钮的点击事件处理函数
        function collapseInputs() {
            // 隐藏输入框
            document.getElementById('rateInputs').classList.add('hidden');
        }

        // 提交POST请求的函数
        function submitPostRequest() {
            // 获取用户输入的值
            const uploadRate = document.getElementById('uploadRate').value;
            const downloadRate = document.getElementById('downloadRate').value;

            // 获取选择的设备名
            const selectedDevice = deviceSelect.value;

            // 获取对应设备的MAC地址
            const macAddress = deviceData[selectedDevice] || '未知';

            // 构造要提交的数据
            const postData = {
                device: selectedDevice,
                mac: macAddress,
                uploadRate: uploadRate,
                downloadRate: downloadRate
            };

            // 模拟提交POST请求,你需要将下面的部分替换为实际的后端API请求
            console.log('模拟提交POST请求:', postData);
            // 此处可以使用fetch或其他AJAX方法向后端发送POST请求
        }
    </script>
</body>
</html>

运行效果:

需求4:一开始只有一个增加按钮,也没有提交和取消按钮,当点击增加按钮的时候,才会根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option是动态增加的,当select选择设备名字时,下面一个框显示对应mac的地址,在mac地址下面有2个输入框,分别是上行速率和下行速率,需要我们手动输入,然后可以提交post请求,点击取消按钮就会折叠起来,不提交请求。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态增加设备</title>
    <style>
        .hidden {
            display: none;
        }
    </style>
</head>
<body>
    <div id="devicesContainer"></div>

    <script>
        // 后端传递的设备名和对应的MAC地址
        const deviceData = {
            'DESKTOP-4DQRGQB': 'e0:be:03:74:40:0b',
            'iQOO-8': 'b0:33:66:38:c3:25',
            // 添加更多设备的MAC地址
        };

        // 用于计数的变量
        let deviceCount = 0;

        // 获取容器元素
        const devicesContainer = document.getElementById('devicesContainer');

        // 初始化设备选择框
        function addDevice() {
            // 增加设备数计数
            deviceCount++;

            // 创建设备选择框
            const deviceSelect = document.createElement('select');
            deviceSelect.id = `deviceSelect${deviceCount}`;
            deviceSelect.addEventListener('change', showMacAndRates);

            // 初始化设备选择框的options
            for (const device in deviceData) {
                const option = document.createElement('option');
                option.value = device;
                option.textContent = device;
                deviceSelect.appendChild(option);
            }

            // 创建显示MAC地址的元素
            const macDisplay = document.createElement('p');
            macDisplay.id = `macDisplay${deviceCount}`;

            // 创建输入框
            const uploadRateInput = document.createElement('input');
            uploadRateInput.type = 'text';
            uploadRateInput.placeholder = '上行速率';

            const downloadRateInput = document.createElement('input');
            downloadRateInput.type = 'text';
            downloadRateInput.placeholder = '下行速率';

            // 在容器中增加元素
            devicesContainer.appendChild(deviceSelect);
            devicesContainer.appendChild(macDisplay);
            devicesContainer.appendChild(uploadRateInput);
            devicesContainer.appendChild(downloadRateInput);
        }

        // 设备选择框变化时的处理函数
        function showMacAndRates(event) {
            // 获取选择的设备名
            const selectedDevice = event.target.value;
            // 获取设备对应的MAC地址
            const macAddress = deviceData[selectedDevice];
            // 显示MAC地址
            const macDisplayId = `macDisplay${deviceCount}`;
            const macDisplay = document.getElementById(macDisplayId);
            macDisplay.textContent = `MAC地址: ${macAddress}`;
        }
    </script>

    <button onclick="addDevice()">增加</button>
    <button onclick="collapseInputs()">取消</button>
    <button onclick="submitPostRequest()">提交</button>

    <script>
        // 取消按钮的点击事件处理函数
        function collapseInputs() {
            // 清空容器
            devicesContainer.innerHTML = '';
        }

        // 提交POST请求的函数
        function submitPostRequest() {
            // 获取用户输入的值
            const uploadRate = document.getElementById('uploadRate').value;
            const downloadRate = document.getElementById('downloadRate').value;

            // 构造要提交的数据
            const postData = {
                device: document.getElementById(`deviceSelect${deviceCount}`).value,
                uploadRate: uploadRate,
                downloadRate: downloadRate
            };

            // 模拟提交POST请求,你需要将下面的部分替换为实际的后端API请求
            console.log('模拟提交POST请求:', postData);
            // 此处可以使用fetch或其他AJAX方法向后端发送POST请求
        }
    </script>
</body>
</html>

运行效果:

需求5:

一开始页面只有一个增加按钮,没有提交和取消按钮,当点击增加按钮的时候,才会根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option是动态增加的,当select选择设备名字时,下面一个框显示对应mac的地址,在mac地址下面有2个输入框,分别是上行速率和下行速率,需要我们手动输入,这个时候页面只有提交按钮和取消按钮,然后点击提交按钮可以提交post请求,点击取消按钮就会折叠起来,不提交请求,变回之前的只有一个增加按钮.。

代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>动态设置设备信息</title>
</head>
<body>
    <td>设备选择:</td>
    <td colspan="2">
        <select style="width: 220px" size="1" id="deviceSelect" name="deviceSelect" onChange="showDeviceInfo();">
            <!-- 设备选项由后端动态生成 -->
            <option value="DESKTOP-4DQRGQB">DESKTOP-4DQRGQB</option>
            <option value="iQOO-8">iQOO-8</option>
        </select>
        <br>

        <div id="deviceInfo" style="display: none;">
            <p id="macAddress"></p>
            <label for="uploadRate">上行速率:</label>
            <input type="text" id="uploadRate" name="uploadRate">
            <br>
            <label for="downloadRate">下行速率:</label>
            <input type="text" id="downloadRate" name="downloadRate">
            <br>
            <button onclick="submitForm()">提交</button>
            <button onclick="cancelForm()">取消</button>
        </div>
    </td>

    <script>
        function showDeviceInfo() {
            // 获取选中的设备名
            var selectedDevice = document.getElementById("deviceSelect").value;

            // 模拟从后端获取对应的MAC地址
            var macAddress;
            if (selectedDevice === "DESKTOP-4DQRGQB") {
                macAddress = "e0:be:03:74:40:0b";
            } else if (selectedDevice === "iQOO-8") {
                macAddress = "b0:33:66:38:c3:25";
            }

            // 显示MAC地址和输入框
            document.getElementById("macAddress").innerHTML = "MAC地址:" + macAddress;
            document.getElementById("deviceInfo").style.display = "block";
        }

        function submitForm() {
            // 获取用户输入的上行速率和下行速率
            var uploadRate = document.getElementById("uploadRate").value;
            var downloadRate = document.getElementById("downloadRate").value;

            // 模拟提交操作,这里用alert弹窗展示输入信息
            alert("提交成功\n上行速率:" + uploadRate + "\n下行速率:" + downloadRate);
        }

        function cancelForm() {
            // 隐藏设备信息框
            document.getElementById("deviceInfo").style.display = "none";
        }
    </script>
</body>
</html>

运行效果:

需求6:一开始页面只有一个增加按钮,没有提交和取消按钮,当点击增加按钮的时候,才会根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option是动态增加的,当select选择设备名字时,下面一个框显示对应mac的地址,在mac地址下面有2个输入框,分别是上行限速和下行限速,需要我们手动输入,这个时候页面只有提交按钮和取消按钮,然后点击提交按钮可以提交post请求,点击取消按钮就会变为初始状态,只有一个增加按钮。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态添加设备信息</title>
    <style>
        .hidden {
            display: none;
        }
    </style>
</head>
<body>

    <div id="devices">
        <button onclick="addDevice()">增加</button>
    </div>

    <div id="deviceInfo" class="hidden">
        <p id="macAddress"></p>
        <label for="uploadLimit">上行限速:</label>
        <input type="text" id="uploadLimit" name="uploadLimit">
        <br>
        <label for="downloadLimit">下行限速:</label>
        <input type="text" id="downloadLimit" name="downloadLimit">
        <br>
        <button onclick="submitForm()">提交</button>
        <button onclick="cancelForm()">取消</button>
    </div>

    <script>
        function addDevice() {
            // 模拟从后端获取设备列表
            var devices = [
                { value: "DESKTOP-4DQRGQB", label: "DESKTOP-4DQRGQB" },
                { value: "iQOO-8", label: "iQOO-8" }
            ];

            // 创建设备选择下拉框
            var select = document.createElement("select");
            select.id = "deviceSelect";
            for (var i = 0; i < devices.length; i++) {
                var option = document.createElement("option");
                option.value = devices[i].value;
                option.text = devices[i].label;
                select.appendChild(option);
            }

            // 将设备选择下拉框添加到页面中
            document.getElementById("devices").innerHTML = ""; // 清空原有内容
            document.getElementById("devices").appendChild(select);

            // 显示设备信息框
            document.getElementById("deviceInfo").classList.remove("hidden");

            // 监听设备选择事件
            select.addEventListener("change", showDeviceInfo);
        }

        function showDeviceInfo() {
            // 获取选中的设备名
            var selectedDevice = document.getElementById("deviceSelect").value;

            // 模拟从后端获取对应的MAC地址
            var macAddress;
            if (selectedDevice === "DESKTOP-4DQRGQB") {
                macAddress = "e0:be:03:74:40:0b";
            } else if (selectedDevice === "iQOO-8") {
                macAddress = "b0:33:66:38:c3:25";
            }

            // 显示MAC地址
            document.getElementById("macAddress").innerHTML = "MAC地址:" + macAddress;
        }

        function submitForm() {
            // 获取用户输入的上行限速和下行限速
            var uploadLimit = document.getElementById("uploadLimit").value;
            var downloadLimit = document.getElementById("downloadLimit").value;

            // 模拟提交操作,这里用alert弹窗展示输入信息
            alert("提交成功\n上行限速:" + uploadLimit + "\n下行限速:" + downloadLimit);

            // 隐藏设备信息框
            document.getElementById("deviceInfo").classList.add("hidden");
        }

        function cancelForm() {
            // 隐藏设备信息框
            document.getElementById("deviceInfo").classList.add("hidden");

            // 恢复初始状态,只有一个增加按钮
            var addBtn = document.createElement("button");
            addBtn.textContent = "增加";
            addBtn.onclick = addDevice;
            document.getElementById("devices").innerHTML = "";
            document.getElementById("devices").appendChild(addBtn);
        }
    </script>
</body>
</html>

运行效果:

点击取消后变未初始状态:

再次点击增加,会发现有bug,之前输入的东西没有清空。

需求7:

一开始页面只有一个增加按钮,没有提交和取消按钮,当点击增加按钮的时候,才会根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option是动态增加的,当select选择设备名字时,下面一个框显示对应mac的地址,在mac地址下面有2个输入框,分别是上行限速和下行限速,需要我们手动输入,这个时候页面只有提交按钮和取消按钮,然后点击提交按钮可以提交post请求,点击取消按钮就会变为初始状态,清空之前的输入。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态添加设备信息</title>
    <style>
        .hidden {
            display: none;
        }
    </style>
</head>
<body>

    <div id="devices">
        <button onclick="addDevice()">增加</button>
    </div>

    <div id="deviceInfo" class="hidden">
        <p id="macAddress"></p>
        <label for="uploadLimit">上行限速:</label>
        <input type="text" id="uploadLimit" name="uploadLimit">
        <br>
        <label for="downloadLimit">下行限速:</label>
        <input type="text" id="downloadLimit" name="downloadLimit">
        <br>
        <button onclick="submitForm()">提交</button>
        <button onclick="cancelForm()">取消</button>
    </div>

    <script>
        function addDevice() {
            // 模拟从后端获取设备列表
            var devices = [
                { value: "DESKTOP-4DQRGQB", label: "DESKTOP-4DQRGQB" },
                { value: "iQOO-8", label: "iQOO-8" }
                // 可以添加更多设备...
            ];

            // 创建设备选择下拉框
            var select = document.createElement("select");
            select.id = "deviceSelect";
            for (var i = 0; i < devices.length; i++) {
                var option = document.createElement("option");
                option.value = devices[i].value;
                option.text = devices[i].label;
                select.appendChild(option);
            }

            // 将设备选择下拉框添加到页面中
            document.getElementById("devices").innerHTML = ""; // 清空原有内容
            document.getElementById("devices").appendChild(select);

            // 显示设备信息框
            document.getElementById("deviceInfo").classList.remove("hidden");

            // 监听设备选择事件
            select.addEventListener("change", showDeviceInfo);
        }

        function showDeviceInfo() {
            // 获取选中的设备名
            var selectedDevice = document.getElementById("deviceSelect").value;

            // 模拟从后端获取对应的MAC地址
            var macAddress;
            if (selectedDevice === "DESKTOP-4DQRGQB") {
                macAddress = "e0:be:03:74:40:0b";
            } else if (selectedDevice === "iQOO-8") {
                macAddress = "b0:33:66:38:c3:25";
            }

            // 显示MAC地址
            document.getElementById("macAddress").innerHTML = "MAC地址:" + macAddress;
        }

        function submitForm() {
            // 获取用户输入的上行限速和下行限速
            var uploadLimit = document.getElementById("uploadLimit").value;
            var downloadLimit = document.getElementById("downloadLimit").value;

            // 模拟提交操作,这里用alert弹窗展示输入信息
            alert("提交成功\n上行限速:" + uploadLimit + "\n下行限速:" + downloadLimit);

            // 隐藏设备信息框
            document.getElementById("deviceInfo").classList.add("hidden");
            resetPage();
        }

        function cancelForm() {
            // 隐藏设备信息框
            document.getElementById("deviceInfo").classList.add("hidden");
            resetPage();
        }

        function resetPage() {
            // 恢复初始状态,只有一个增加按钮
            var addBtn = document.createElement("button");
            addBtn.textContent = "增加";
            addBtn.onclick = addDevice;
            document.getElementById("devices").innerHTML = "";
            document.getElementById("devices").appendChild(addBtn);

            // 清空之前的输入
            document.getElementById("uploadLimit").value = "";
            document.getElementById("downloadLimit").value = "";
        }
    </script>
</body>
</html>

运行效果:

点击取消,然后再点增加,会清空里面的数据。

需求8:

一开始页面只有一个增加按钮,没有提交和取消按钮,当点击增加按钮的时候,才会根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option是动态增加的,当select选择设备名字时,下面一个框显示对应mac的地址,在mac地址下面有2个输入框,分别是上行限速和下行限速,需要我们手动输入,这个时候页面只有提交按钮和取消按钮,然后点击提交按钮可以提交post请求,点击取消按钮就会变为初始状态,清空之前的输入。注:选择设备名字时旁边弄设备选择这几个字。

代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>设备信息提交</title>
    <style>
        .hidden {
            display: none;
        }
    </style>
</head>
<body>

<button id="addButton" onclick="addDevice()">增加</button>

<div id="deviceInfo" class="hidden">
    <label for="deviceSelect">设备选择:</label>
    <select id="deviceSelect" onchange="showDeviceInfo()">
        <!-- 动态生成设备选项 -->
    </select>
    <br>
    <label for="macAddress">MAC地址:</label>
    <input type="text" id="macAddress" readonly>
    <br>
    <label for="uploadSpeed">上行限速:</label>
    <input type="text" id="uploadSpeed">
    <br>
    <label for="downloadSpeed">下行限速:</label>
    <input type="text" id="downloadSpeed">
    <br>
    <button onclick="submitDeviceInfo()">提交</button>
    <button onclick="cancel()">取消</button>
</div>

<script>
    var devices = [
        { value: "DESKTOP-4DQRGQB", mac: "e0:be:03:74:40:0b" },
        { value: "iQOO-8", mac: "b0:33:66:38:c3:25" }
        // 添加更多设备...
    ];

    var addButton = document.getElementById("addButton");
    var deviceInfo = document.getElementById("deviceInfo");
    var deviceSelect = document.getElementById("deviceSelect");
    var macAddressInput = document.getElementById("macAddress");
    var uploadSpeedInput = document.getElementById("uploadSpeed");
    var downloadSpeedInput = document.getElementById("downloadSpeed");

    // 动态生成设备选项
    devices.forEach(function(device) {
        var option = document.createElement("option");
        option.value = device.value;
        option.text = device.value;
        deviceSelect.add(option);
    });

    function addDevice() {
        deviceInfo.classList.remove("hidden");
    }

    function showDeviceInfo() {
        var selectedDevice = deviceSelect.value;
        var selectedDeviceObj = devices.find(device => device.value === selectedDevice);

        if (selectedDeviceObj) {
            macAddressInput.value = selectedDeviceObj.mac;
            uploadSpeedInput.value = "";
            downloadSpeedInput.value = "";
        }
    }

    function submitDeviceInfo() {
        var selectedDevice = deviceSelect.value;
        var macAddress = macAddressInput.value;
        var uploadSpeed = uploadSpeedInput.value;
        var downloadSpeed = downloadSpeedInput.value;

        // 模拟提交数据到后端
        console.log("提交数据到后端:", selectedDevice, macAddress, uploadSpeed, downloadSpeed);

        // 提交完成后隐藏设备信息框
        cancel();
    }

    function cancel() {
        deviceInfo.classList.add("hidden");
        deviceSelect.value = "";
        macAddressInput.value = "";
        uploadSpeedInput.value = "";
        downloadSpeedInput.value = "";
    }
</script>

</body>
</html>

运行效果:

点击取消再次增加,唯一有的bug就是多了增加按钮。

需求9:一开始页面只有一个增加按钮,没有提交和取消按钮,当点击增加按钮的时候,才会根据后端传过来的设备名:DESKTOP-4DQRGQB,以及mac:e0:be:03:74:40:0b;iQOO-8,mac:b0:33:66:38:c3:25,用web option是动态增加的,当select选择设备名字时(注:选择设备名字时旁边弄设备选择这几个字),下面一个框显示对应mac的地址,在mac地址下面有2个输入框,分别是上行限速和下行限速,需要我们手动输入,这个时候页面只有提交按钮和取消按钮,没有增加按钮,然后点击提交按钮可以提交post请求,点击取消按钮就会变为初始状态,清空之前的输入。

代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>设备信息提交</title>
    <style>
        .hidden {
            display: none;
        }

        #deviceInfo {
            margin-top: 10px;
        }
    </style>
</head>
<body>

<div id="deviceInfo" class="hidden">
    <label for="deviceSelect">设备选择:</label>
    <select id="deviceSelect" onchange="showDeviceInfo()">
        <!-- 动态生成设备选项 -->
    </select>
    <br>
    <label for="macAddress">MAC地址:</label>
    <input type="text" id="macAddress" readonly>
    <br>
    <label for="uploadSpeed">上行限速:</label>
    <input type="text" id="uploadSpeed">
    <br>
    <label for="downloadSpeed">下行限速:</label>
    <input type="text" id="downloadSpeed">
    <br>
    <button onclick="submitDeviceInfo()">提交</button>
    <button onclick="cancel()">取消</button>
</div>

<button id="addButton" onclick="addDevice()">增加</button>

<script>
    var devices = [
        { value: "DESKTOP-4DQRGQB", mac: "e0:be:03:74:40:0b" },
        { value: "iQOO-8", mac: "b0:33:66:38:c3:25" }
        // 添加更多设备...
    ];

    var deviceInfo = document.getElementById("deviceInfo");
    var deviceSelect = document.getElementById("deviceSelect");
    var macAddressInput = document.getElementById("macAddress");
    var uploadSpeedInput = document.getElementById("uploadSpeed");
    var downloadSpeedInput = document.getElementById("downloadSpeed");

    var addButton = document.getElementById("addButton");

    // 动态生成设备选项
    devices.forEach(function(device) {
        var option = document.createElement("option");
        option.value = device.value;
        option.text = device.value;
        deviceSelect.add(option);
    });

    function showDeviceInfo() {
        var selectedDevice = deviceSelect.value;
        var selectedDeviceObj = devices.find(device => device.value === selectedDevice);

        if (selectedDeviceObj) {
            macAddressInput.value = selectedDeviceObj.mac;
            uploadSpeedInput.value = "";
            downloadSpeedInput.value = "";
        }
    }

    function submitDeviceInfo() {
        var selectedDevice = deviceSelect.value;
        var macAddress = macAddressInput.value;
        var uploadSpeed = uploadSpeedInput.value;
        var downloadSpeed = downloadSpeedInput.value;

        // 模拟提交数据到后端
        console.log("提交数据到后端:", selectedDevice, macAddress, uploadSpeed, downloadSpeed);

        // 提交完成后隐藏设备信息框
        cancel();
    }

    function cancel() {
        deviceInfo.classList.add("hidden");
        deviceSelect.value = "";
        macAddressInput.value = "";
        uploadSpeedInput.value = "";
        downloadSpeedInput.value = "";
        addButton.style.display = "inline-block";
    }

    function addDevice() {
        deviceInfo.classList.remove("hidden");
        addButton.style.display = "none";
    }
</script>

</body>
</html>

运行效果:

提前请求:

点击需求再次增加,满足要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1239658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Qt的UDP通信、TCP文件传输程序的设计与实现——QQ聊天群聊

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言一…

【C++】vector的介绍与使用

&#x1f9d1;‍&#x1f393;个人主页&#xff1a;简 料 &#x1f3c6;所属专栏&#xff1a;C &#x1f3c6;个人社区&#xff1a;越努力越幸运社区 &#x1f3c6;简 介&#xff1a;简料简料&#xff0c;简单有料~在校大学生一枚&#xff0c;专注C/C/GO的干货分…

【Vue】自定义指令

自定义指令 自定义指令就是自己定义的指令&#xff0c;是对 DOM 元素进行底层操作封装 ,程序化地控制 DOM&#xff0c;拓展额外的功能 全局定义 Vue.directive(指令名字, definition) 指令名&#xff1a;不包括v-前缀&#xff0c;使用时候包括v-&#xff0c;v-指令名defini…

VPS配置了swap没发挥作用怎么办

1 swap配置了但没用上 我的服务器内存是2G&#xff0c;装多一点东西就不够用&#xff0c;于是我给他分配了2G的swap&#xff0c;等了几小时&#xff0c;swap还是一点都没有使用 Linux中Swap&#xff08;即&#xff1a;交换分区&#xff09;&#xff0c;类似于Windows的虚拟内存…

IT变更管理实现服务台高效协同

在当今数字化时代&#xff0c;IT变更管理是IT管理员在服务台中必须面对的重要挑战之一。随着技术的不断发展和市场的快速变化&#xff0c;管理员需要定期进行IT系统和流程的变更&#xff0c;在确保业务稳定性的同时还需提高效率和准确率。 1、全方位的变更计划 IT中应该有一个全…

如何使用YOLOv8代码框架中的RT-DETR

1. RT-DETR RT-DETR是由由此&#xff0c;百度推出了——RT-DETR (Real-Time DEtection TRansformer) &#xff0c;一种基于 DETR 架构的实时端到端检测器&#xff0c;其在速度和精度上取得了 SOTA 性能。 RT-DETR开源的代码在百度自己的飞桨paddlepaddle上&#xff0c;因此非…

Confluence 未授权漏洞分析(CVE-2023-22515)

0x01 漏洞描述 Confluence 是由 Atlassian 开发的企业级协作软件。2023年10月&#xff0c;Atlassian 官方披露 CVE-2023-22515 Atlassian Confluence Data Center & Server 权限提升漏洞。攻击者可构造恶意请求创建管理员&#xff0c;从而登录系统&#xff0c;造成敏感信息…

BUUCTF [SWPU2019]神奇的二维码 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 密文&#xff1a; 下载附件&#xff0c;得到一个.png图片。 解题思路&#xff1a; 1、使用QR research扫一下&#xff0c;得到“swpuctf{flag_is_not_here}”的提示。 2、放到0…

HTML新手入门笔记整理:HTML基本介绍

网页 静态页面 仅可供用户浏览&#xff0c;不具备与服务器交互的功能。 动态页面 可供用户浏览&#xff0c;具备与服务器交互的功能。 HTML HTML&#xff0c;全称HyperText Markup Language&#xff08;超文本标记语言&#xff09;,是一种用于创建网页的标准标记语言。用于…

经典双指针算法试题(二)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、有效三角形的个数1、题目讲解2、讲解算法原理3、代码实现 二、查找总价格为目标值的两个商…

MCU 的 TOP 15 图形GUI库:选择最适合你的图形用户界面(一)

在嵌入式系统开发中&#xff0c;选择一个合适的图形用户界面&#xff08;GUI&#xff09;库是至关重要的。在屏幕上显示的时候&#xff0c;使用现成的图形库&#xff0c;这样开发人员就不需要弄清楚底层任务&#xff0c;例如如何绘制像素、线条、形状&#xff0c;如果再高级一点…

栈和队列java实现

栈和队列都是动态集合&#xff0c;且在其上进行DELETE操作所移除的元素是预先设定的。在栈中&#xff0c;被删除的是最近插入的元素&#xff1a;栈实现的是一种后进先出&#xff08;last-in&#xff0c;first-out&#xff0c;LIFO&#xff09; 策略。在队列中&#xff0c;被删去…

问鼎web服务

华子目录 www简介常见Web服务程序介绍&#xff1a;服务器主机主要数据浏览器网址及http介绍urlhttp请求方法 http协议请求的工作流程www服务器类型静态网站动态网站 快速安装Apache安装准备工作httpd所需目录主配置文件 实验操作 www简介 Web网络服务也叫www&#xff08;world…

K8S部署mongodb-sharded-cluster(7.0.2)副本分片

添加源 helm repo add bitnami https://charts.bitnami.com/bitnami指定版本拉取 helm pull --repo https://charts.bitnami.com/bitnami mongodb-sharded --version 7.0.5安装时选择SCRAM-SHA-1默认是SCRAM-SHA-256 helm install -n prod mymongodb mongodb-sharded --value…

优先级队列(priority_queue)

文章目录 优先级队列的定义定义&#xff1a;接口头文件优先队列和堆的关系使用&#xff1a;排序的规则容器 仿函数应用 队列存指针问题&#xff1a; 优先级队列的定义 定义&#xff1a; 黄色部分是仿函数 接口 头文件 这里不需要包含其他的头文件只需要使用队列的头文件就可以…

蓝桥杯每日一题2023.11.22

题目描述 题目分析 由题目知其每个品牌积分一定小于315故直接暴力枚举每个品牌如果符合要求直接输出即可 &#xff08;答案&#xff1a;150&#xff09; #include<bits/stdc.h> using namespace std; int main() {for(int i 1; i < 315; i ){for(int j 1; j <…

三、防火墙-源NAT

学习防火墙之前&#xff0c;对路由交换应要有一定的认识 源NAT基本原理1.1.NAT No-PAT1.2.NAPT1.3.出接口地址方式&#xff08;Easy IP&#xff09;1.4.Smart NAT1.5.三元组 NAT1.6.多出口场景下的源NAT 总结延伸 ——————————————————————————————…

python实现调和反距离空间插值法AIDW

1 简介 AIDW 主要是针对 IDW 的缺点进行了改进&#xff0c;考虑了样本点与预测点的位置&#xff0c;即方向和距离&#xff0c;具体见下图&#xff1a; 2 改进 IDW 公式&#xff1a; 从IDW算法可看出&#xff0c;插值点的估算值仅与插值样本距插值点的远近相关&#xff0c;并未…

基于鹈鹕算法优化概率神经网络PNN的分类预测 - 附代码

基于鹈鹕算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于鹈鹕算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于鹈鹕优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

【LeetCode刷题】--40.组合总和II

40.组合总和II 本题详解&#xff1a;回溯算法 class Solution {public List<List<Integer>> combinationSum2(int[] candidates, int target) {int len candidates.length;List<List<Integer>> res new ArrayList<>();if (len 0) {return re…