css 努力使输出变量显示在页面顶部

mnemlml8  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(108)

我已经尝试了几个小时,现在创建一个基本的数据使用计算器,当你选择其中一个按钮,它计算的值分配和显示在页面的顶部。
你可以在
我打算显示它的一部分。我会得到周围的每月数据使用情况,因为这将饲料从总的数据使用。
有谁能指出我这里有什么问题吗?我设法让它工作正常的值只是数字输入,但现在我已经开始使用按钮,我还没有设法让它工作。
这是我希望它看起来的样子,数据使用情况在顶部:
Variables displayed
而这就是我正在得到的按钮版本(或没有得到):
Variables not displaying
缺少数据使用部分

<h1>Data Usage Calculator</h1>
<p id="total_data_usage"></p>
<p id="total_monthly_data_usage"></p>
<style>
    .btn {
        background-color: white;
        border: 1px solid black;
        padding: 8px 16px;
        cursor: pointer;
    }

    .btn.selected {
        background-color: black;
        color: white;
    }

    #total_data_usage {
        font-size: 40px;
    }

    #total_monthly_data_usage {
        font-size: 40px;
    }

    body {
        padding: 20px;
        font-family: 'Lato', sans-serif;
        font-size: 13pt;
        text-align: center;
    }

    form {
        display: inline-block;
        width: 400px;
    }
</style>

<form>

    <h2>Select number of hours per day for streaming in SD:</h2>

    <button type="button" class="btn" id="never" name="sd_streaming_hours" value="0">Never</button>
    <button type="button" class="btn" id="one_hour" name="sd_streaming_hours" value="1">1 hour</button>
    <button type="button" class="btn" id="two_hours" name="sd_streaming_hours" value="2">2 hours</button>
    <button type="button" class="btn" id="three_hours" name="sd_streaming_hours" value="3">3 hours</button>
    <button type="button" class="btn" id="five_hours" name="sd_streaming_hours" value="5">5 hours</button>
    <button type="button" class="btn" id="eight_hours" name="sd_streaming_hours" value="8">8 hours</button>

</form>

<script>

    document.getElementById("never").addEventListener("click", updateResult);
    document.getElementById("one_hour").addEventListener("click", updateResult);
    document.getElementById("two_hours").addEventListener("click", updateResult);
    document.getElementById("three_hours").addEventListener("click", updateResult);
    document.getElementById("five_hours").addEventListener("click", updateResult);
    document.getElementById("eight_hours").addEventListener("click", updateResult);

</script>

<script>

    const buttons = document.querySelectorAll('button[name="sd_streaming_hours"]');

    buttons.forEach(button => {
        button.addEventListener('click', function () {
            // Deselect all buttons
            buttons.forEach(btn => btn.classList.remove('selected'));
            // Select this button
            this.classList.add('selected');
        });
    });

</script>

<script>

    console.log(totalDataUsage);
    var totalDataUsage;
    var totalMonthlyDataUsage;

    function updateResult(event) {
        // Get the value of the clicked button
        var buttonValue = event.target.value;

        // Calculate the result of the desired calculation
        totalDataUsage = buttonValue * 2;

        // Display the result on the page
        document.getElementById("total_data_usage").innerHTML = totalDataUsage + "GB";
    }

</script>

我尝试了很多改进,但似乎都不起作用。所有内容似乎都链接回total_data_usage输出,但由于某种原因什么也没有显示。

t5fffqht

t5fffqht1#

你的代码看起来没有任何问题。我通过在下面的Minimal Reproducible Example中分离HTML/CSS/JS来清理它,看起来一切都正常。(另外,当你发布这样的问题时,你应该绝对自己 * 创建一个MRE。)
在运行下面的示例时,您需要更具体地说明哪些部分不起作用。

document.getElementById("never").addEventListener("click", updateResult);
document.getElementById("one_hour").addEventListener("click", updateResult);
document.getElementById("two_hours").addEventListener("click", updateResult);
document.getElementById("three_hours").addEventListener("click", updateResult);
document.getElementById("five_hours").addEventListener("click", updateResult);
document.getElementById("eight_hours").addEventListener("click", updateResult);

const buttons = document.querySelectorAll('button[name="sd_streaming_hours"]');

buttons.forEach(button => {
  button.addEventListener('click', function() {
    // Deselect all buttons
    buttons.forEach(btn => btn.classList.remove('selected'));
    // Select this button
    this.classList.add('selected');
  });
});

console.log(totalDataUsage);
var totalDataUsage;
var totalMonthlyDataUsage;

function updateResult(event) {
  // Get the value of the clicked button
  var buttonValue = event.target.value;

  // Calculate the result of the desired calculation
  totalDataUsage = buttonValue * 2;

  // Display the result on the page
  document.getElementById("total_data_usage").innerHTML = totalDataUsage + "GB";
}
.btn {
  background-color: white;
  border: 1px solid black;
  padding: 8px 16px;
  cursor: pointer;
}

.btn.selected {
  background-color: black;
  color: white;
}

#total_data_usage {
  font-size: 40px;
}

#total_monthly_data_usage {
  font-size: 40px;
}

body {
  padding: 20px;
  font-family: 'Lato', sans-serif;
  font-size: 13pt;
  text-align: center;
}

form {
  display: inline-block;
  width: 400px;
}
<h1>Data Usage Calculator</h1>
<p id="total_data_usage"></p>
<p id="total_monthly_data_usage"></p>
<form>

  <h2>Select number of hours per day for streaming in SD:</h2>

  <button type="button" class="btn" id="never" name="sd_streaming_hours" value="0">Never</button>
  <button type="button" class="btn" id="one_hour" name="sd_streaming_hours" value="1">1 hour</button>
  <button type="button" class="btn" id="two_hours" name="sd_streaming_hours" value="2">2 hours</button>
  <button type="button" class="btn" id="three_hours" name="sd_streaming_hours" value="3">3 hours</button>
  <button type="button" class="btn" id="five_hours" name="sd_streaming_hours" value="5">5 hours</button>
  <button type="button" class="btn" id="eight_hours" name="sd_streaming_hours" value="8">8 hours</button>

</form>

相关问题