我正在对需要从远程API提取并对页面的各个部分进行更改的页面进行更改。听起来像是抽出jQuery和Ajax的时候了,不是吗?相反,我只是使用了老式的JavaScript。实际上,我使用了新的JavaScript。

浏览器在图书馆和框架的出现中并没有停滞不前。因此,当我们需要额外烘烤时,我们可以利用这些功能。

一些JSONP

第一步是执行JSONP调用。这通常很简单:在页面中嵌入脚本标记。该脚本将运行您在页面上定义的功能。

var scr = document.createElement('script');
scr.src = 'http://openexchangerates.org/latest.json?callback=formatCurrency';
document.body.appendChild(scr);

当脚本运行时,它会将数据传递给formatCurrency函数。优秀。

一旦数据在函数中,我需要获取特定类型的所有元素并根据这些元素进行更改。

querySelectorAll

querySelectorAll方法将获取与特定选择器匹配的所有元素 - 类似于jQuery。它仅限于浏览器理解的选择器,这肯定比jQuery可以做的要少。有时用凿子代替大锤。

querySelectorAll方法也适用于IE8及以及所有其他流行的浏览器。我还包装了我的整个代码块,以便在执行任何操作之前检查浏览器是否支持此方法。

if (document.querySelectorAll) {
function formatCurrency (data) { var els = document.querySelectorAll('.price');
/* do stuff with the elements */
} var scr = document.createElement('script');
scr.src = 'http://openexchangerates.org/latest.json?callback=formatCurrency';
document.body.appendChild(scr);
}

正如您在示例中所看到的,我正在寻找的是具有一类价格的每个元素。我可以使用,getElementsByClassName但在IE8中不支持,而是querySelectorAll。到现在为止还挺好。

在那之后,只需要获取属性,进行一些更改,然后使用innerHTML将其重新插入到DOM中。十分简单。

渐进式增强

但是那些不支持这种新功能的用户呢?它与那些不支持JavaScript的人一样。就我而言,这意味着用户只会看到加拿大的定价而不是将其转换为本地货币。

这是完整的最终脚本。

if (document.querySelectorAll) {
var currencyLookup = {
EUR:'€', USD:'US$', CAD:'CDN$'
}
function formatCurrency (data) {
// format germany price
var els = document.querySelectorAll('.price');
for (var i=0; i<els.length; i++) {
var price = parseInt(els[i].innerHTML.replace(/[^0-9]*/,''));
var curr = els[i].getAttribute('data-currency');
var newPrice = price / data.rates.CAD * data.rates[curr];
els[i].innerHTML = '<small>' + currencyLookup[curr] + '</small>' + Math.round(newPrice);
}
} var scr = document.createElement('script');
scr.src = 'http://openexchangerates.org/latest.json?callback=formatCurrency';
document.body.appendChild(scr);
}

这总共是628个字节。不需要JavaScript库或框架。这可以缩小到469个字节。与只需要在页面上获取jQuery所需的91,000字节相差甚远。

Takes it Easy

“只使用jQuery”可能是首选词,但幸运的是,你并不总是需要那么多代码来解决一个简单的问题。页面越来越大。很高兴知道我们并不总是需要使用大量资源来实现一个小目标。

JavaScript越来越简单啦啦啦的更多相关文章

  1. javaScript(2)---简单使用

    javaScript(2)---简单使用 学习要点: 1.创建一张HTML页面 2.<Script>标签解析 3.JS代码嵌入的一些问题 一.创建一张HTML页面 <!DOCTYPE ...

  2. JavaScript设置简单的自动时间

    下面就是一段简单的JavaScript设置简单的自动时间,时间显示在一个输入框input里面. <html> <head> </head> <body> ...

  3. Javascript的简单测试环境

    在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很好的例子,既让我们得到了一个好用的小工具 ...

  4. Javascript学习-简单测试环境

    Javascript学习-简单测试环境 在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很 ...

  5. 越来越“简单”的Java

    Java,20岁了.从我写下第一行Java代码,迄今已有十余年了,眼见Java——这个当年刚刚找到自己成长方向的懵懂少年,成长为如今当之无愧的业界王者.它已拥有世界上最庞大的开发者社区,以及无可匹敌的 ...

  6. JavaScript中简单排序总结

    JavaScript中简单排序总结 冒泡排序 经典排序算法, 双重for循环 在第二个for循环的时候, j < arr.len -1 -i , 这一步的优化很重要 function bullS ...

  7. JavaScript 实现简单的 弹出框关闭框

    JavaScript 实现简单的 弹出框关闭框 知识点: 1.javaScript 添加HTML标签 2.javaScript 添加HTML标签属性 3.javaScript 追加元素 代码献上: & ...

  8. 用javascript实现简单的用户登录验证

    用javascript实现简单的用户登录验证 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  9. JavaScript做简单的购物车效果(增、删、改、查、克隆)

    比如有时候遇到下面这种情况,点击加入购物车,然后在上方的购物车中动态的添加商品以及商品的信息,我们就可以通过JavaScript实现简单的这些操作. 首先我们需要在html文档中,通过css对页面的布 ...

随机推荐

  1. 有关﹤![CDATA[ ]]> 说明

    CDATA DTD中的属性类型 全名:character data 在标记CDATA下,所有的标记.实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待, CDATA的形式如下: <! ...

  2. WORD中无损复制图片

    问题 默认 Ctrl+C复制出来图片图片的严重模糊,复制出来的不是原图片!因为图片尺寸被修改后复制出来的则是模糊的 解决办法 解决办法把WORD中的图片恢复成默认的,如果对图片进行了缩放请把缩放比恢复 ...

  3. JMeter 十一:参数化

    Test Plan中定义变量 打开测试计划,在用户定义的变量中定义变量. 这里定义了一个HOST变量,值为“www.baidu.com”. 之后就可以使用 ${HOST} 来引用这个变量. User ...

  4. iOS多线程之NSOperation和NSOperationQueue的使用

    一:NSOperation 两个子类+重写main方法 NSInvocationOperation NSBlockOperation 有个类方法 BlockOprationWith: 还有就是自己个子 ...

  5. webDriver API——第9部分Firefox WebDriver

    class selenium.webdriver.firefox.webdriver.WebDriver(firefox_profile=None, firefox_binary=None, time ...

  6. c++11 学习

    #include <iostream> // std::cout #include <functional> // std::ref #include <thread&g ...

  7. 强大的代码生成工具 MyGeneration

    MyGeneration是一个功能很强大的代码生成工具.通过编写包含各种类型脚本(C#,VB.Net,JScript,VBScript)的模板,通过数据库的表内容,生成你需要的各种代码.你可以用它来生 ...

  8. .Net操作Excel,Work等几种解决方案

    (一)传统操作Excel遇到的问题: 1.如果是.NET[使用office组件Microsoft.Iffice.interop.Excel的话],需要在服务器端装Office,且及时更新它,以防漏洞, ...

  9. 【微信小程序】转载:微信小程序之购物车功能

    前言 以往的购物车,基本都是通过大量的 DOM 操作来实现.微信小程序其实跟 vue.js 的用法非常像,接下来就看看小程序可以怎样实现购物车功能. 需求 先来弄清楚购物车的需求. 单选.全选和取消, ...

  10. Call to undefined function mysql_connect()

    Fatal error: Call to undefined function mysql_connect() in /data/www/qy_b2b/include/db_mysql.class.p ...