使我的JavaScript代码更整洁

时间:2015-02-21 02:25:24

标签: javascript json performance google-chrome

基本上这是鞋类网站的代码,只要页面加载,脚本就会运行并自动将适当大小的鞋子添加到购物车中。

skuAndSize代表网站用于鞋码的变量。 selectIndex值为7对应于大小10.

var size_i_want = "10";
var how_many = 1;

function addToCart()
{
  var sizesList=document.getElementsByName("skuAndSize")[0];
  function setSizeValue()
   {
       document.getElementsByName("skuAndSize")[0].selectedIndex = 7;
    }
   if(sizesList != undefined)
    {
      setSizeValue();
      document.getElementsByClassName("add-to-cart")[0].click();
    }
  else
    {
     setTimeout("addToCart()", 5);
    }
 }
setTimeout("addToCart()", 5);

我有什么方法可以修改此代码以使其运行更快?它是通过chrome扩展输入的,这里是manifest.json文件,虽然我不认为它会影响程序的速度,但我可能错了:

{
    "name": "shoe_program",
    "version": "1.0",
    "manifest_version": 2,
    "description": "",
    "permissions": [
        "tabs",
        "contentSettings"
    ],

    "icons": {
        "128": "icon.png"
    },
    "browser_action": {
        "default_icon": "icon.png",
        "default_title": "SneakerATC extension [SIZE-10]"
    },
    "content_scripts": [
        {
            "matches": [
                "http://*.nike.com/*"
            ],
            "js": [
                "testing.js"
            ]
        }
    ],
    "web_accessible_resources": [
        "script.js"
    ]
}

1 个答案:

答案 0 :(得分:0)

可能对此做出的大多数更改(假设您已发布应用程序的所有代码)将为您带来非常小的收益。可能没什么值得注意的。但是,您可以在.selectedIndex功能内的sizeList上致电setSizeValue。您缓存document.getElementsByName("sizeAndSku") [0],而不是使用setSizeValue函数中的缓存变量,而是再次调用它。这需要再次执行方法.getElementsByName

由于您已在sizeList内缓存了该值,因此您可以在sizeList[0].selectedIndex=7函数中使用setSizeValue

你不会获得任何真正有益的速度提升,但至少你少了一个函数调用。我认为在任何实际应用中它都不会产生任何影响,但至少应该给你一些东西。