JavaScript编程练习与解决方案详解
立即解锁
发布时间: 2025-08-20 01:27:19 阅读量: 1 订阅数: 5 


JavaScript入门与实践指南
### JavaScript 编程练习与解决方案详解
#### 1. 数字小数位处理
在处理数字时,有时需要将数字固定到指定的小数位数。首先,使用 `Math.round(fixNumber * div) / div` 来创建固定位数的数字。接着,将这个结果作为参数传递给 `String()` 构造函数,创建一个新的字符串对象,并将其存储回 `fixNumber` 中。
然而,此时得到的数字可能不是所需的格式,例如可能是 `2.1` 而不是 `2.100`。为了添加所需的额外零,需要进行以下操作:
- 计算小数点后的实际位数:`(fixNumber.length - fixNumber.lastIndexOf(".") - 1)`。
- 计算需要添加的零的数量:`var zerosRequired = decimalPlaces - (fixNumber.length - fixNumber.lastIndexOf(".") - 1);`
- 添加零:
```javascript
for (; zerosRequired > 0; zerosRequired-- ) {
fixNumber = fixNumber + "0";
}
```
- 返回结果:`return fixNumber;`
#### 2. 显示页面链接的 `href`
- **问题**:创建一个包含多个链接的页面,并编写代码,在窗口加载事件触发时,显示页面上每个链接的 `href`。
- **解决方案**:
```html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Chapter 6: Question 1</title>
<script type="text/javascript">
function displayLinks()
{
var linksCounter;
for (linksCounter = 0; linksCounter < document.links.length; linksCounter++)
{
alert(document.links[linksCounter].href);
}
}
</script>
</head>
<body onload="displayLinks()">
<a href="link0.htm" >Link 0</a>
<a href="link1.htm">Link 2</a>
<a href="link2.htm">Link 2</a>
</body>
</html>
```
- **操作步骤**:
1. 在 `<body>` 标签中添加 `onload` 属性,连接到 `displayLinks()` 函数。
2. 在 `displayLinks()` 函数中,使用 `for` 循环遍历 `document.links` 集合。
3. 使用 `alert` 框显示每个链接的 `href` 属性。
#### 3. 根据浏览器类型重定向页面
- **问题**:创建两个页面,`ieonly.htm` 和 `notieonly.htm`,并根据用户的浏览器类型进行重定向。
- **解决方案**:
```html
<!-- notieonly.htm -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Chapter 6: Example Question 2</title>
<script type="text/javaScript">
function getBrowserName()
{
var lsBrowser = navigator.userAgent;
if (lsBrowser.indexOf("MSIE") >= 0)
{
lsBrowser = "MSIE";
}
else if (lsBrowser.indexOf("Firefox") >= 0)
{
lsBrowser = "Firefox";
}
else if (lsBrowser.indexOf("Chrome") >= 0)
{
lsBrowser = "Chrome";
}
else if (lsBrowser.indexOf("Safari") >= 0)
{
lsBrowser = "Safari";
}
else if (lsBrowser.indexOf("Opera") >= 0)
{
lsBrowser = "Opera";
}
else
{
lsBrowser = "UNKNOWN";
}
return lsBrowser;
}
function getBrowserVersion()
{
var findIndex;
var browserVersion = 0;
var browser = getBrowserName();
browserVersion = navigator.userAgent;
findIndex = browserVersion.indexOf(browser) + browser.length + 1;
browserVersion = parseFloat(browserVersion.substring(findIndex,
findIndex + 3));
return browserVersion;
}
function checkBrowser()
{
if (getBrowserName() == "MSIE")
{
window.location.replace("ieonly.htm");
}
}
</script>
</head>
<body onload="checkBrowser()">
<h2>Welcome to the Not-IE only page</h2>
</body>
</html>
<!-- ieonly.htm -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Chapter 6: Example Question 2</title>
<script type="text/javaScript">
function getBrowserName()
{
var lsBrowser = navigator.userAgent;
if (lsBrowser.indexOf("MSIE") >= 0)
{
lsBrowser = "MSIE";
}
else if (lsBrowser.indexOf("Firefox") >= 0)
{
lsBrowser = "Firefox";
}
else if (lsBrowser.indexOf("Chrome") >= 0)
{
lsBrowser = "Chrome";
}
else if (lsBrowser.indexOf("Safari") >= 0)
{
lsBrowser = "Safari";
}
else if (lsBrowser.indexOf("Opera") >= 0)
{
lsBrowser = "Opera";
}
else
{
lsBrowser = "UNKNOWN";
}
return lsBrowser;
}
function getBrowserVersion()
{
var findIndex;
var browserVersion = 0;
var browser = getBrowserName();
browserVersion = navigator.userAgent;
findIndex = browserVersion.indexOf(browser) + browser.length + 1;
browserVersion = parseFloat(browserVersion.substring(findIndex,
findIndex + 3));
return browserVersion;
}
function checkBrowser()
{
if (getBrowserName() != "MSIE")
{
window.location.replace("notieonly.htm");
}
}
</script>
</head>
<body onload="checkBrowser()">
<h2>Welcome to the Internet Explorer only page</h2>
</body>
</html>
```
- **操作步骤**:
1. 在每个页面的 `<body>` 标签中添加 `onload` 属性,连接到 `checkBrowser()` 函数。
2. 在 `checkBrowser()` 函数中,使用 `getBrowserName()` 函数获取用户的浏览器类型。
3. 根据浏览器类型使用 `window.location.replace()` 方法进行重定向。
#### 4. 鼠标悬停切换图片
- **问题**:在页面中插入一个图片,当鼠标指针悬停在图片上时,切换到另一张图片;当鼠标指针移出时,切换回原来的图片。
- **解决方案**:
```html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Chapter 6: Question 3</title>
<script type="text/javascript">
function mouseOver(that)
{
that.src = "Img2.jpg";
}
function mouseOut(that)
{
that.src = "Img1.jpg";
}
</script>
</head>
<body>
<img src="Img1.jpg" name="myImage" onmouseover="mouseOver(this)"
onmouseout="mouseOut(this)" />
</body>
</html>
```
- **操作步骤**:
1. 定义 `mouseOver()` 和 `mouseOut()` 函数,分别处理鼠标悬停和移出事件。
2. 在 `<img>` 标签中添加 `onmouseover` 和 `onmouseout` 属性,连接到相应的函数。
#### 5. 温度转换器用户界面
- **问题**:为温度转换器创建一个用户界面,让用户可以输入华氏温度并将其转换为摄氏温度。
- **解决方案**:
```html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Chapter 7: Question 1</title>
<script type="text/javascript">
function convertToCentigrade(degFahren)
{
var degCent = 5 / 9 * (degFahren - 32);
return degCent;
}
function btnToCent_onclick()
{
var calcBox = document.form1.txtCalcBox;
if (isNaN(calcBox.value) == true || calcBox.value == "")
{
calcBox.value = "Error Invalid Value";
}
else
{
calcBox.value = convertToCentigrade(calcBox.value);
}
}
</script>
</head>
<body>
<form action="" name="form1">
<p>
<input type="text" name="txtCalcBox" value="0.0" />
</p>
<input type="button" value="Convert to centigrade"
name="btnToCent" onclick="btnToCent_onclick()" />
</form>
</body>
</html>
```
- **操作步骤**:
1. 创建一个包含文本框和按钮的表单。
2. 在按钮的 `onclick` 事件中调用 `btnToCent_onclick()` 函数。
3. 在 `btnToCent_onclick()` 函数中,检查用户输入的有效性,并进行温度转换。
#### 6. 计算机系统配置选择界面
- **问题**:创建一个用户界面,让用户可以选择计算机系统的组件,并实时更新系统价格。
- **解决方案**:
```html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Chapter 7: Question 1</title>
<script type="text/javascript">
var compItems = new Array();
compItems[100] = 1000;
compItems[101] = 1250;
compItems[102] = 1500;
compItems[200] = 35;
compItems[201] = 65;
compItems[202] = 95;
compItems[300] = 50;
compItems[301] = 75;
compItems[302] = 100;
compItems[400]
```
0
0
复制全文
相关推荐










