You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JavaScript Android App中使用可切换标签页失效,求助实现温度/距离转换器

修复标签页切换并实现转换器功能

我帮你把标签页的切换功能修复好了,同时还实现了温度转换器和距离转换器的完整功能,你可以直接用下面的代码替换原来的内容:

<!DOCTYPE html>
<html>
<head>
    <style>
        /* 标签页样式 */
        .tab {
            overflow: hidden;
            border: 1px solid #ccc;
            background-color: #f1f1f1;
        }

        .tab button {
            background-color: inherit;
            float: left;
            border: none;
            outline: none;
            cursor: pointer;
            padding: 14px 16px;
            transition: 0.3s;
            font-size: 17px;
        }

        .tab button:hover {
            background-color: #ddd;
        }

        .tab button.active {
            background-color: #ccc;
        }

        /* 标签页内容样式 */
        .tabcontent {
            display: none;
            padding: 6px 12px;
            border: 1px solid #ccc;
            border-top: none;
        }

        .tabcontent.active {
            display: block;
        }

        /* 转换器样式 */
        .converter {
            margin: 20px 0;
            padding: 15px;
            border: 1px solid #eee;
            border-radius: 5px;
        }

        .converter input {
            padding: 8px;
            margin: 5px 0;
            width: 200px;
        }
    </style>
</head>
<body>
    <div class="app">
        <!-- Tab links -->
        <div class="tab">
            <button class="tablinks active" onclick="openTab(event, 'temperature')">温度转换器</button>
            <button class="tablinks" onclick="openTab(event, 'distance')">距离转换器</button>
        </div>

        <!-- 温度转换器标签内容 -->
        <div id="temperature" class="tabcontent active">
            <h3>温度转换器</h3>
            <div class="converter">
                <label>摄氏度:</label>
                <input type="number" id="celsius" oninput="convertTemperature('celsius')" placeholder="输入摄氏度">
                <br>
                <label>华氏度:</label>
                <input type="number" id="fahrenheit" oninput="convertTemperature('fahrenheit')" placeholder="输入华氏度">
            </div>
        </div>

        <!-- 距离转换器标签内容 -->
        <div id="distance" class="tabcontent">
            <h3>距离转换器</h3>
            <div class="converter">
                <label>公里:</label>
                <input type="number" id="km" oninput="convertDistance('km')" placeholder="输入公里数">
                <br>
                <label>英里:</label>
                <input type="number" id="miles" oninput="convertDistance('miles')" placeholder="输入英里数">
            </div>
        </div>
    </div>

    <script>
        // 标签页切换函数
        function openTab(evt, tabName) {
            // 获取所有标签内容和标签按钮
            let tabcontent = document.getElementsByClassName("tabcontent");
            let tablinks = document.getElementsByClassName("tablinks");

            // 隐藏所有标签内容
            for (let i = 0; i < tabcontent.length; i++) {
                tabcontent[i].classList.remove("active");
            }

            // 移除所有标签按钮的激活状态
            for (let i = 0; i < tablinks.length; i++) {
                tablinks[i].classList.remove("active");
            }

            // 显示当前选中的标签内容,激活对应的按钮
            document.getElementById(tabName).classList.add("active");
            evt.currentTarget.classList.add("active");
        }

        // 温度转换函数
        function convertTemperature(from) {
            const celsiusInput = document.getElementById('celsius');
            const fahrenheitInput = document.getElementById('fahrenheit');

            if (from === 'celsius') {
                const celsius = parseFloat(celsiusInput.value);
                if (!isNaN(celsius)) {
                    fahrenheitInput.value = (celsius * 9/5 + 32).toFixed(2);
                } else {
                    fahrenheitInput.value = '';
                }
            } else {
                const fahrenheit = parseFloat(fahrenheitInput.value);
                if (!isNaN(fahrenheit)) {
                    celsiusInput.value = ((fahrenheit - 32) * 5/9).toFixed(2);
                } else {
                    celsiusInput.value = '';
                }
            }
        }

        // 距离转换函数
        function convertDistance(from) {
            const kmInput = document.getElementById('km');
            const milesInput = document.getElementById('miles');
            const kmToMiles = 0.621371;

            if (from === 'km') {
                const km = parseFloat(kmInput.value);
                if (!isNaN(km)) {
                    milesInput.value = (km * kmToMiles).toFixed(2);
                } else {
                    milesInput.value = '';
                }
            } else {
                const miles = parseFloat(milesInput.value);
                if (!isNaN(miles)) {
                    kmInput.value = (miles / kmToMiles).toFixed(2);
                } else {
                    kmInput.value = '';
                }
            }
        }
    </script>
</body>
</html>

关键功能说明:

  • 标签页切换:openTab函数会先清除所有标签的激活状态,再给当前点击的标签和对应内容添加active类,确保只有选中的标签内容显示。
  • 温度转换器:支持摄氏度和华氏度的双向实时转换,输入时自动计算结果并保留两位小数。
  • 距离转换器:支持公里和英里的双向实时转换,同样会自动计算并格式化结果。

你可以把这段代码放到你的Android WebView里运行,标签切换和转换器功能都能正常工作啦~

内容的提问来源于stack exchange,提问作者Pete Foster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:03:52