HTML与JavaScript交互实例解析

内容分享11小时前发布
0 0 0

table {
border-collapse: collapse;
width: 100%;
margin-bottom: 1rem;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
pre {
background-color: #f8f8f8;
padding: 15px;
border-radius: 4px;
overflow-x: auto;
}

35、创建一个网页,该网页包含一个使用 DOM 0 内联事件连接到链接的 onclick 事件处理程序。事件处理程序应显示一个提示框,内容为“你点击了这里”。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>Onclick</title>
    <script type="text/javascript">
        function handleclick() {
            alert("你点击了这里");
            return false;
        }
    </script>
</head>
<body>
    <p>
        <a href="#" onclick="return handleclick();">Click Here</a>
    </p>
</body>
</html>

36、创建一个网页,使用 ehandler.js 中较新的事件处理方式,连接点击(click)事件,当点击链接时显示警报信息‘You Clicked Here’。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>Onclick</title>
    <script type="text/javascript" src="ehandler.js"></script>
    <script type="text/javascript">
        function handleclick() {
            alert("You Clicked Here");
            return false;
        }
    </script>
</head>
<body>
    <p><a href="#">Click Here</a></p>
    <script type="text/javascript">
        var aLink = document.getElementById("clickMe");
        EHandler.add(aLink, "click", function() {
            handleclick();
        });
    </script>
</body>
</html>

37、创建一个网页,其中包含一个指向 http://www.microsoft.com 的链接,并使该链接在新标签页中打开。

可以使用锚点元素的

target

属性来实现链接在新标签页中打开,示例代码如下:


<a target="_blank" href="http://www.microsoft.com">Go To Microsoft</a>

将此代码添加到网页的 HTML 文件中即可。

38、创建一个向浏览器发送 cookie 的网页。将过期日期设置为提前一天。通过在设置时查看或在其存储到计算机后查看,验证 JavaScript 代码是否已将 cookie 发送到浏览器。你可以使用 JavaScript 或查看计算机上的 cookie 来完成练习的第二部分。

以下是实现该功能的步骤和示例代码:

步骤:

创建 HTML 文件,在其中编写 JavaScript 代码来设置 cookie 并设置过期时间为一天前。

可以通过浏览器开发者工具或者 JavaScript 代码来验证 cookie 是否被正确设置。

示例代码:


<!DOCTYPE html>
<html>
<head>
<script>
function setCookie(name, value, days) {
    var d = new Date();
    d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = name + "=" + value + ";" + expires + ";path=/";
}

// 设置 cookie,过期时间为 -1 天(提前一天)
setCookie("myCookie", "testValue", -1);

// 验证 cookie 是否设置成功
function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

var cookieValue = getCookie("myCookie");
if (cookieValue) {
    alert("Cookie 已成功设置,值为: " + cookieValue);
} else {
    alert("Cookie 设置失败");
}
</script>
</head>
<body>
</body>
</html>

在浏览器中打开该 HTML 文件,若弹出提示框显示“Cookie 已成功设置”,则说明 JavaScript 代码已成功将 cookie 发送到浏览器。也可以通过浏览器的开发者工具(如 Chrome 的 Application 面板中的 Cookies 选项)来查看 cookie 是否被正确设置。

39、创建一个网页,发送一个有效期提前设置为一周且设置了安全标志的 cookie。该 cookie 的名称要与已有的一个 cookie 不同,以保证创建两个独立的 cookie。此外,要确保为这个新创建的 cookie 启用安全标志。

以下是实现该功能的网页代码:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>Hello Cookie</title>
    <script type="text/javascript">
        var cookName = "cookie2";
        var cookVal = "testvalue";
        var date = new Date();
        date.setTime(date.getTime() + 604800000); // 一周,单位为毫秒
        var expireDate = date.toGMTString();
        var myCookie = cookName + "=" + cookVal + ";expires=" + expireDate + ";secure";
        document.cookie = myCookie;
    </script>
</head>
<body>
    <p>Hello</p>
</body>
</html>

40、创建一个网页,尝试读取设置了安全标志的 cookie。你收到这个 cookie 了吗?如果没有,你需要做什么才能收到它?

除非使用安全套接字层(SSL)连接,否则无法读取设置了安全标志的 cookie。若没收到,需要使用 SSL 连接(如 HTTPS 连接)才能收到。

41、创建一个网页,读取已创建的cookie。使用for循环和if条件语句,当在循环中找到名称为 ‘cookie1’ 的cookie时,显示一个alert()对话框。不要为其他任何cookie显示alert()对话框。


<html>
<head>
    <title>Reading Cookie</title>
    <script type="text/javascript">
        var incCookies = document.cookie.split("; ");
        for (var c = 0; c < incCookies.length; c++) {
            var splitCookies = incCookies[c].split("=");
            if (splitCookies[0] == "cookie1") {
                alert(incCookies[c]);
            }
        }
    </script>
</head>
<body>
    <p>Hello</p>
</body>
</html>

42、创建一个预加载的悬停图像,并确保将 JavaScript 函数与 HTML 分离。


# 创建预加载的悬停图像并分离 JavaScript 与 HTML

可按以下步骤操作:

## 1. 明确原理

预加载图像是创建图像对象,调用其 `src` 属性指向要预加载的图像。因预加载具有异步性,每个需预加载的图像都要创建新的图像对象。

## 2. 分离 JavaScript 与 HTML

将 JavaScript 代码放在外部文件中,通过 `<script>` 标签引入 HTML 文件。

## 3. 示例代码

在 HTML 文件中,使用 `<script>` 标签引入外部 JavaScript 文件,如:

```html
<script type="text/javascript" src="ehandler.js"></script>

在 JavaScript 文件中,编写预加载和悬停效果的代码,示例如下:


function rollover() {
    var images = document.getElementsByTagName("img");
    var imgLength = images.length;
    var preLoad = [];

    for (var i = 0; i < imgLength; i++) {
        if (images[i].id.match(/rollover/)) {
            preLoad[i] = new Image();
            preLoad[i].src = images[i].id + "_over.png";

            EHandler.add(images[i], "mouseover", function(i) {
                return function() {
                    images[i].src = images[i].id + "_over.png";
                };
            }(i));

            EHandler.add(images[i], "mouseout", function(i) {
                return function() {
                    images[i].src = images[i].id + "_default.png";
                };
            }(i));
        }
    }
}

43、预加载图像映射中使用的所有图像,使得当访问者将鼠标悬停在地图的不同区域时,无需下载这些图像。

为图像映射中的每个图像创建一个新的图像对象,调用其

src()

方法指向要预加载的图像。示例代码如下:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>Rollover</title>
    <script type="text/javascript" src="ehandler.js"></script>
    <script type="text/javascript">
        function rollover() {
            var images = document.getElementsByTagName("img");
            var imgLength = images.length;
            var preLoad = [];

            for (var i = 0; i < imgLength; i++) {
                if (images[i].id.match(/rollover/)) {
                    preLoad[i] = new Image();
                    preLoad[i].src = images[i].id + "_over.png";

                    EHandler.add(images[i], "mouseover", function(i) {
                        return function() {
                            images[i].src = images[i].id + "_over.png";
                        };
                    }(i));

                    EHandler.add(images[i], "mouseout", function(i) {
                        return function() {
                            images[i].src = images[i].id + "_default.png";
                        };
                    }(i));
                }
            }
        }
    </script>
</head>
<body>
</body>
</html>

44、创建一个基于选择框输入类型显示警告对话框的网页表单。


首先定义一个函数,当表单的更改事件触发时调用该函数。

```javascript
function displayValue() {
    var selected = document.forms["starform"].startype.value;
    alert("You selected " + selected);
}

该 JavaScript 代码会显示从下拉菜单中选择的值。

然后在 HTML 中,选择框的 HTML 包含一个名为

selected

的属性,用于指示显示哪个选项,示例中选择一个空选项,使选择框的初始值为空:


<option selected="selected"> </option>

完整代码在

sel.htm

文件中。



##45、创建一个基本的 HTML 文档,该文档使用样式表,样式表可以在文档内部,也可以通过外部文件引入。确保页面至少有两个 <p> 元素和一个 <h1> 元素,并为每个元素赋予 ID 属性。
以下是一个使用内部样式表的示例:

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 这里可以添加样式 */
    </style>
</head>
<body>
    <h1>这是一个标题</h1>
    <p>这是第一个段落。</p>
    <p>这是第二个段落。</p>
</body>
</html>

若使用外部样式表,可将样式写在一个

.css

文件中,如

styles.css

,并在 HTML 中引入:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <h1>这是一个标题</h1>
    <p>这是第一个段落。</p>
    <p>这是第二个段落。</p>
</body>
</html>

styles.css

文件内容示例:


/* 这里可以添加样式 */

46、使用 JavaScript 更改其中一个

元素的样式,将其颜色属性更改为蓝色。

可以通过以下步骤实现:

首先为

<p>

元素设置

ID

属性。

然后使用

document.getElementById()

方法获取该元素。

最后设置其

style.color

属性为

'blue'

示例代码如下:


HTML 部分:


<p id='myPara'>这是一个段落。</p>


JavaScript 部分:


document.getElementById('myPara').style.color = 'blue';

47、使用 JavaScript 更改所有

元素的样式,将它们的可见性设置为隐藏。

以下代码可使用级联样式表(CSS)的

visibility

属性隐藏所有

<p>

元素:


<script type="text/javascript">
    var pelements = document.getElementsByTagName("p");
    var pelmLength = pelements.length;
    for (var i = 0; i < pelmLength; i++) {
        pelements[i].style.visibility = "hidden";
    }
</script>

48、使用 JavaScript 检索

元素可见性的当前样式,并使用 alert() 对话框显示当前可见性设置。

可以使用以下代码实现:


var pelements = document.getElementsByTagName("p");
var pelmLength = pelements.length;
for (var i = 0; i < pelmLength; i++) {
  alert(pelements[i].style.visibility);
  pelements[i].style.visibility = "hidden";
  alert(pelements[i].style.visibility);
}

49、使用附加到窗口对象的onerror事件处理程序,在函数未定义时处理错误。错误处理程序应采用比使用alert()更友好的方式呈现错误。

可将使用

alert()

的错误处理部分替换为在页面特定位置显示错误信息。以下是示例代码:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>onerror</title>
</head>
<body>
<div>Hi</div>
<script type="text/javascript">
    function init() {
        doSomething();
    }

    function errorHandler() {
        var errorDiv = document.createElement('div');
        errorDiv.textContent = '发生错误:' + arguments[0] + ',位于第' + arguments[2] + '行';
        document.body.appendChild(errorDiv);
        return true;
    }

    window.onload = init;
    window.onerror = errorHandler;
</script>
</body>
</html>

这样错误信息会以更友好的方式显示在页面上。

50、构建一个网页表单,并使用 try/catch 块来捕获在文本字段中输入的城市不是“斯德哥尔摩”的情况。提供视觉反馈以表明输入的城市不正确。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>Try/Catch</title>
    <script type="text/javascript"></script>
</head>
<body>
    <form name="formexample" action="#">
        <div>Enter a City: <input name="city"></div>
        <div><input type="submit"></div>
    </form>
    <script type="text/javascript">
        function checkValid() {
            try {
                var cityField = document.forms[0]["city"];
                if (cityField.value != "Stockholm") {
                    throw "It's not Stockholm";
                }
            } catch(errorObject) {
                alert(errorObject);
            }
        }

        function init() {
            document.forms[0].onsubmit = function() { return checkValid() };
        }

        window.onload = init;
    </script>
</body>
</html>

51、构建一个网页表单,并使用 try/catch/finally 块来捕获输入数字大于 100 的情况。确保无论访客输入的值是有效还是无效,每次使用表单时都向他们表示感谢。


function checkValid(eventObj) {
    try {
        var numField = document.forms[0]["num"];
        if (isNaN(numField.value)) {
            var err = new Array("It's not a number", numField);
            throw err;
        } else if (numField.value > 100) {
            var err = new Array("It's greater than 100", numField);
            throw err;
        } else if (numField.value < 1) {
            var err = new Array("It's less than 1", numField);
            throw err;
        }
        return true;
    } catch (errorObject) {
        var errorText = document.createTextNode(errorObject[0]);
        var feedback = document.getElementById("feedback");
        var newspan = document.createElement("span");
        newspan.appendChild(errorText);
    } finally {
        // 在这里添加感谢信息,如弹出感谢提示框
        alert('感谢您使用表单!');
    }
}

52、使用 DOM 交替设置表格每行的颜色,使每隔一行具有灰色背景。提示:#aaabba 是这种灰色的十六进制表示。

以下是使用 DOM 交替设置表格每行颜色的代码:


// 假设已经获取到表格元素 table
var table = document.getElementsByTagName('table')[0];
var rows = table.rows;
for (var i = 0; i < rows.length; i++) {
    if (i % 2) {
        rows[i].style.backgroundColor = '#aaabba';
    }
}

上述代码通过遍历表格的每一行,使用取模运算符

%

判断行索引是否为奇数,如果是则将该行的背景颜色设置为

#aaabba

© 版权声明

相关文章

暂无评论

none
暂无评论...