JavaScript实践与网页交互技巧

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;
}

28、在火狐浏览器中安装用户代理切换器插件,或在 Internet Explorer 中安装类似插件。然后使用查看 navigator 对象的代码,对所发现的不同值进行实验。此练习有助于说明为什么不建议仅使用 navigator 对象来确定兼容性。额外任务:自定义你自己的用户代理。

按照要求,先在火狐浏览器安装用户代理切换器插件,或在 Internet Explorer 安装类似插件。

接着用查看

navigator

对象的代码实验不同值,以此明白仅用

navigator

对象确定兼容性不可取。

最后可自定义一个用户代理完成额外任务。

29、创建一个文档,使用 DOM 创建并追加一段文本段落。紧接着该段落,使用 DOM 创建一个指向你选择的网站的链接。确保所有元素都有 id 属性。

以下是实现该需求的代码:


// 创建初始元素
var newelement = document.createElement("p");
newelement.setAttribute("id", "pelement");
document.body.appendChild(newelement);
newelement.appendChild(document.createTextNode("This is a paragraph, albeit a short one."));
var anchorelem = document.createElement("a");
anchorelem.setAttribute("id", "aelement");
anchorelem.setAttribute("href", "http://www.braingia.org/");
document.body.appendChild(anchorelem);
anchorelem.appendChild(document.createTextNode("Click Here"));

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

以下是实现该功能的 HTML 代码示例:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Onclick Event Example</title>
</head>
<body>
    <a href="#" onclick="alert('你点击了这里'); return false;">点击此链接</a>
</body>
</html>

在上述代码中,

<a>

标签是一个链接,

onclick

是 DOM 0 内联事件处理程序。当用户点击这个链接时,会触发

alert('你点击了这里')

代码,从而弹出一个显示“你点击了这里”的警告框。

return false;

用于阻止链接的默认跳转行为。

31、将已创建的网页修改为使用 ehandler.js 所示的较新样式的事件处理方式,并将相同的点击/单击事件连接起来,以显示之前创建的警报。

要完成此任务,可按以下步骤操作:

确保

ehandler.js

文件存在于项目中。若不存在,可获取该文件。

在 HTML 文件里添加对

ehandler.js

的引用,示例代码如下:

“`html

“`

编写 JavaScript 代码,运用

EHandler

对象来添加点击事件监听器。示例代码如下:

javascript
var element = document.getElementById('yourButtonId');
function showAlert() {
alert('Your alert message');
}
EHandler.add(element, 'click', showAlert);

其中,

'yourButtonId'

是你想要添加点击事件的元素的 ID,

'Your alert message'

是之前创建的警报消息。

把上述代码添加到 HTML 文件中,或者将其保存为一个单独的 JavaScript 文件并引用。

这样就完成了网页的修改,使其使用

ehandler.js

中的事件处理方式,并且连接了点击事件以显示之前的警报。

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

可以使用 HTML 中锚元素(

<a>

)的

target

属性来实现。示例代码如下:


<a href="http://www.microsoft.com" target="_blank">访问微软官网</a>

将这段代码添加到 HTML 文件的合适位置,保存后在浏览器中打开该 HTML 文件,点击链接就会在新标签页中打开

http://www.microsoft.com

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


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<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>

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

为创建预加载的悬停图像并分离 JavaScript 与 HTML,可按以下步骤操作:

明确预加载图像原理,即创建图像对象并设置其

src

属性指向要预加载的图像,且为每个需预加载的图像创建新的图像对象。

编写 JavaScript 代码,通过

document.getElementsByTagName("img")

获取所有图像元素,遍历这些元素,若元素 ID 匹配特定规则(如包含

'rollover'

),就创建新的

Image

对象并设置其

src

属性为悬停时的图像路径。

将 JavaScript 代码保存为独立文件(如

ehandler.js

),并在 HTML 文件的

<head>

标签里使用

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

引入该文件,以此实现 JavaScript 函数与 HTML 的分离。

35、预加载图像地图中使用的所有图像,使得当访问者将鼠标移到地图的不同区域时,无需再下载这些图像。

可通过创建 JavaScript 函数来预加载图像。首先,要确保 JavaScript 函数与 HTML 分离。可以创建一个数组来存储图像的路径,然后在页面加载时,使用 JavaScript 的

Image

对象来创建图像实例并设置其

src

属性为数组中的路径,以此实现图像的预加载。

示例代码如下:


function preloadImages() {
    var images = [
        'image1.jpg',
        'image2.jpg'
        // 这里添加更多图像路径
    ];
    for (var i = 0; i < images.length; i++) {
        var img = new Image();
        img.src = images[i];
    }
}
window.onload = preloadImages;

将上述代码保存为一个 JavaScript 文件,然后在 HTML 文件中引入该文件,即可完成图像的预加载。

36、创建一个基于选择框输入类型显示 alert() 对话框的网页表单。

可创建一个包含选择框的表单,为选择框的

change

事件绑定一个事件处理函数,在该函数中使用

alert()

函数显示对话框。

示例代码结构如下:

首先在 HTML 中创建表单和选择框:


<form>
  <select name="startype">
    <option value="Ursa Major">Ursa Major</option>
    <option value="Ursa Minor">Ursa Minor</option>
  </select>
</form>

接着在 JavaScript 中连接事件处理函数,在页面的

<body>

部分添加代码为选择框绑定

change

事件:


document.querySelector('select[name="startype"]').addEventListener('change', function() {
  alert('你选择的是: ' + this.value);
});

当选择框选项改变时触发函数,在函数里使用

alert()

显示信息。

37、重新设计披萨订单系统,添加原披萨示例中的按钮,使接单人员能够选择蔬菜特餐、肉类特餐或夏威夷披萨类型。这些按钮随后应选中要制作的特定类型披萨的正确配料复选框。对于蔬菜特餐披萨,选中青椒、蘑菇和洋葱;对于肉类特餐披萨,选中香肠、意大利辣香肠和火腿;对于夏威夷披萨,选中菠萝和火腿。

添加以下代码到披萨应用程序的

<head>

部分:


function flip(pizzatype) {
    if (pizzatype == "veggiespecial") {
        document.getElementById("peppers").checked = "true";
        document.getElementById("onions").checked = "true";
        document.getElementById("mushrooms").checked = "true";
    } else if (pizzatype == "meatspecial") {
        document.getElementById("sausage").checked = "true";
        document.getElementById("pepperoni").checked = "true";
        document.getElementById("ham").checked = "true";
    } else if (pizzatype == "hawaiian") {
        document.getElementById("ham").checked = "true";
        document.getElementById("pineapple").checked = "true";
    }
}

使用以下HTML表单(注意添加了三个按钮并更改了每个配料的

id

属性):

38、创建一个使用样式表的基本 HTML 文档,样式表可以在文档内部,也可以通过外部文件引入。确保页面至少有两个

元素和一个

元素,并给每个元素添加 ID 属性。

以下是一个示例代码:


<!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"> -->
    <style>
        /* 这里也可以写内部样式 */
    </style>
</head>
<body>
    <h1>这是一个标题</h1>
    <p>这是第一个段落。</p>
    <p>这是第二个段落。</p>
</body>
</html>

39、使用 JavaScript 更改其中一个

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

可先通过

document.getElementById

方法获取特定

元素,再设置其

style.color

属性为蓝色。示例代码如下:

HTML 部分:


<p>这是一个段落。</p>

JavaScript 部分:


var paragraph = document.getElementById("myParagraph");
paragraph.style.color = "blue";

40、使用 JavaScript 更改所有

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

以下代码可实现该功能:


<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>

41、使用 JavaScript 获取

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


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

42、使用附加到窗口对象的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>
    <div></div>
    <script type="text/javascript">
        function init() {
            doSomething();
        }

        function errorHandler(errorMessage, url, lineNumber) {
            var errorDiv = document.getElementById('error-message');
            errorDiv.innerHTML = `很抱歉,出现了错误:${errorMessage} 发生在第 ${lineNumber} 行`;
            return true;
        }

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

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

以下是一个示例代码,用于构建网页表单并使用

try/catch/finally

块来捕获数字大于 100 的情况,同时在最后感谢访问者:


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>表单验证</title>
</head>
<body>
  <form>
    <label for="numberInput">请输入 1 到 100 之间的数字:</label>
    <input type="number" name="numberInput">
    <input type="submit" value="提交">
  </form>
  <script>
    document.getElementById('myForm').addEventListener('submit', function (event) {
      event.preventDefault();
      try {
        var inputValue = parseInt(document.getElementById('numberInput').value);
        if (isNaN(inputValue)) {
          throw new Error('输入不是有效的数字');
        }
        if (inputValue > 100) {
          throw new Error('输入的数字大于 100');
        }
        if (inputValue < 1) {
          throw new Error('输入的数字小于 1');
        }
        alert('输入有效,提交成功!');
      } catch (error) {
        alert(error.message);
      } finally {
        alert('感谢您使用本表单!');
      }
    });
  </script>
</body>
</html>

上述代码中,创建了一个包含数字输入框和提交按钮的表单。当用户提交表单时,会触发事件监听器。在

try

块中,获取用户输入的数字并进行验证。如果输入不是有效数字、大于 100 或小于 1,会抛出相应的错误。

catch

块会捕获这些错误并显示错误信息。无论输入是否有效,

finally

块都会执行,显示感谢信息。

44、在 HTTP 请求方法中,哪一种最安全?为什么?

在 HTTP 请求方法中,没有一种比其他方法更安全。只有添加安全套接层(SSL)才能在 HTTP 方法之上提供一层安全保障。并且,应该仅将 POST 方法与 SSL 结合使用,因为 GET 方法会将参数直接放在 URL 上,无论是否使用 SSL 都可能被看到,而 POST 请求的参数包含在请求体中,不易被随意查看。

45、构建一个服务器端程序,返回该程序作为参数接收的两个数字的和。使用异步 XMLHttpRequest 对象调用该程序。

服务器端程序(sum.php)代码如下:


<?php 
    print $_GET['num1'] + $_GET['num2'];
?>

使用异步 XMLHttpRequest 对象调用该程序的代码如下:


<script>
    var requestObj = ...; // 假设已通过 readyAJAX() 函数获取 requestObj
    var url = "sum.php?num1=数字1&num2=数字2";
    requestObj.open("GET", url, true);
    requestObj.send();
    requestObj.onreadystatechange = function() {
        if (requestObj.readyState == 4) {
            if (requestObj.status == 200) {
                alert(requestObj.responseText);
            } else {
                alert(requestObj.statusText);
            }
        }
    }
</script>

其中“数字1”和“数字2”需替换为实际要相加的数字。

46、分析常见的JavaScript库和框架。你认为哪个最适合新的JavaScript程序员学习?为什么?


jQuery 可能是新的 JavaScript 程序员最容易学习的。它包含在单个 JavaScript 文件中,有丰富的功能集、强大的选项和良好的扩展性,还拥有出色的社区支持。使用它可以轻松为网页添加效果、增强可用性并简化 AJAX 的数据处理。此外,微软在 Visual Studio 2010 中也预装了 jQuery,这为初学者提供了便利。

47、在使用 jQuery 进行 AJAX 操作的代码基础上,有一个包含多个州名称的列表,每个州名称显示在一个单独的

元素中。添加 CSS 样式,使鼠标悬停在列表中的某个州对应的

元素时,该

元素的背景颜色变为蓝色。提示:有多种实现方法。

一种实现方法是使用

.hover()

函数和

.css()

函数来改变背景颜色,这在

showStates

函数中完成。以下是修改后的

showStates

函数:


function showStates(data, status) {
    $.each(data, function(item) {
        $('#states').append('<div>' + data[item] + '</div>');
        $('#states').children().hover(
            function() {
                $(this).css('background-color', 'blue');
            },
            function() {
                $(this).css('background-color', '');
            }
        );
    });
}
© 版权声明

相关文章

暂无评论

none
暂无评论...