(似乎)相互依赖的 HTML 'id'属性



概述

大家好。我试图教自己一些HTML/CSS/JavaScript,但我遇到了一些事情,这让我认为我误解了HTML中"id"属性的目的和功能的一个或多个方面。

在下面的部分中,我概述了我试图实现的目标、代码的相关部分,以及(从我的角度(我得到的意外结果。

提前感谢您分享您的想法和专业知识;到目前为止,在我的编码之旅中,这个网站及其社区对我来说非常有价值。

我在努力实现什么

预期函数
当我单击按钮时,我希望它触发我的numberChange((函数,该函数将myNumber变量转换为两位小数,并将其存储在justTwoDecimals变元中。

预期显示
然后我希望justTwoDecimals的值单独出现在屏幕上(即,我不希望更长的myNumber出现(。

我的代码

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<script type="text/javascript">
var myNumber = 5.1234567;
var justTwoDecimals = 0;

function numberChange()
{
justTwoDecimals= parseFloat(myNumber).toFixed(2);
document.getElementById("myNumber").innerHTML=myNumber;
document.getElementById("justTwoDecimals").innerHTML=justTwoDecimals;
}
</script>
<button type="button" onClick="numberChange()">Click Here</button>

<p><u>Number With Just Two Decimals</u><br><a id="justTwoDecimals">Click the Button</a></p>
</body>
</html>

意外结果

Result Without Changes
使用上面的代码,我单击了按钮,但"单击按钮"文本没有响应,并且不会转换为"5.12";正如预期的那样。
FirstResult

Result With Changes
当我在第28行添加代码时,justTwoDecimals值会按预期填充,但不幸的是,myNumber的值现在可见,用数字堵塞了屏幕:(
SecondResult

26. <button type="button" onClick="numberChange()">Click Here</button>
27.
28. <p><u>Long Number Value</u><br><a id="myNumber">Click The Button</a></p>
29. <p><u>Number With Just Two Decimals</u><br><a id="justTwoDecimals">Click the Button</a></p>

我的问题

答案可能就在我眼前,但为什么myNumber值需要出现在屏幕上才能正确填充justTwoDecimals

我认为整个numberChange((函数始终在运行,无论屏幕上是否出现任何值。

再次感谢!

问题是这一行:

document.getElementById("myNumber").innerHTML=myNumber;

在您的原始示例中,没有id="myNumber"的元素,因此,当您试图获取一个不存在的元素时,它会抛出一个错误,并停止执行函数,下一行永远不会运行。

如果删除该行,则会得到预期的结果。上面的行计算要显示的值,下面的行显示DOM中的值。

var myNumber = 5.1234567;
var justTwoDecimals = 0;
function numberChange() {
justTwoDecimals = parseFloat(myNumber).toFixed(2);
document.getElementById("justTwoDecimals").innerHTML = justTwoDecimals;
}
<button type="button" onClick="numberChange()">Click Here</button>
<p>Number With Just Two Decimals</p>
<p id="justTwoDecimals">Click the Button</p>

运行带有更改的结果示例是因为将myNumber添加到DOM中,不会引发异常,并且justTwoDecimals元素也会更新。

最新更新