我建立了一个网页,检测您当地的天气预报。但是,为了使它具有独特性,我试图让网页在界面上改变颜色。它会根据天气api中的哪个天气图标更改颜色。 (即weath.weather [0] [“icon”])。我试图让它运行得尽可能快,同时让它更容易理解。所以我正在寻找一种替代方法。款式/颜色多种元素,通过使用的setAttribute(的)(JavaScript)的
我决定来存储颜色变化功能在一个变量,因此它可以被多次重复使用,所以我可以缩短switch语句。它包含一个可以重用的CSS字符串变量。字符串为函数的setAttribute造型属性:
var coloring = function(id, Text, Background) {
var colorChange = "color: " + Text + "; background: " + Background + ";";
document.getElementById(id).setAttribute("style", colorChange);
};
这将被用于通过参照它们的id来改变DOM的各种元件/部分的颜色。下面是DOM:
<body id="background">
<div id="header">
<h1>Local Weather Detector</h1>
</div>
<div id="location">
<h5 id="locIntro">Today's weather from Location...</h5>
</div>
<div id="box">
<div id="temperature">
<p><strong>Today, </strong>The temperature in your area is...
<button id="tempSwap">
</button></p>
</div>
<div id="weather">
<p>- and the general forecast is...</p>
</div>
</div>
<div id="copywrite"><h6> Ⓒ Thomas Jackson</h6>
<h6>(Project for Free Code Camp, Full Stack course)</h6></div>
</body>
我会得到来自API的图标数据,则switch语句将决定需要根据哪个图标就改变什么颜色。与使用着色()函数中的每一个开关箱会改变DOM的颜色,以自己的一套颜色:
$.getJSON(api, function(weath) {
switch (weath.weather[0]["icon"]) {
case "01d": //clear
coloring("background", "#f1c40f", "#3498db");
coloring("box", "#2980b9", "#ecf0f1");
coloring("temp", "#c0392b", "");
break;
case "01d":
case "03d":
case "04d":
case "50d": //cloud
coloring("background", "#3498db", "#ecf0f1");
coloring("header", "#f1c40f", "");
coloring("box", "", "#2980b9");
coloring("temp", "", "#3498db");
break;
case "02d": //cloudClear
coloring("background", "c0392b", "#2980b9");
coloring("header", "#f1c40f", "");
coloring("box", "", "#ecf0f1");
coloring("temp", "", "#2980b9");
break;
case "11d": //thunder
coloring("background", "#c0392b", "#2980b9");
coloring("header", "#f1c40f", "");
coloring("box", "", "#f1c40f");
coloring("temp", "", "#c0392b");
break;
case "13d": //snow
coloring("background", "#ecf0f1", "#2980b9");
coloring("header", "#34495e", "");
coloring("box", "", "#a5f2f3");
coloring("temp", "", "#34495e");
break;
case "03n":
case "04n":
case "50n": //cloudNight
coloring("background", "#ecf0f1", "#7f8c8d");
coloring("header", "#e74c3c", "");
coloring("box", "#f1c40f", "#34495e");
coloring("temp", "", "#2c3e50");
break;
case "09n":
case "10n": //rainNight
coloring("background", "#3498db", "#2c3e50");
coloring("header", "#f1c40f", "");
coloring("box", "#2980b9", "#95a5a6");
coloring("temp", "#3498db", "#2980b9");
break;
case "11n": //thunderNight
coloring("background", "#f1c40f", "#2c3e50");
coloring("header", "#e74c3c", "");
coloring("box", "#c0392b", "#f1c40f");
coloring("temp", "", "#c0392b");
break;
case "13n": //snowNight
coloring("background", "#f1c40f", "#2c3e50");
coloring("header", "#a5f2f3", "");
coloring("box", "#34495e", "#a5f2f3");
coloring("temp", "#2c3e50", "#f1c40f");
break;}
}
如果我要对这个错误的方式,将是很好的了解。我的主要目标是让其他开发人员更高效,更清晰。
由于代码已经是功能性的,我认为这个问题更适合在代码审查stackexchange:https://codereview.stackexchange.com/ 。在那里,人们可能会给你更好的反馈。 –
谢谢。有没有办法将这个转移到StackExchange代码审查与复制和粘贴? –
我不认为它有可能在那里移植它。 –