gpt4 book ai didi

javascript - Skycons,不能两次显示相同的图标吗?

转载 作者:数据小太阳 更新时间:2023-10-29 04:34:53 24 4
gpt4 key购买 nike

我已经将 JavaScript 插件“Skycons”连接到雅虎天气 RSS 提要。我遇到的问题是多天可能会有相同的天气预报,并且因为插件从 ID 而不是类中提取图标,所以我无法再次提取相同的图标。

例如,除了最后一个 li 实例之外,下面的所有图标都会显示 - 因为我重复了 id 雪:

<ul class="days">
<li class="col-md-3 col-sm-3 col-xs-3"><strong>Saturday</strong>
<canvas id="snow" width="50" height="50"></canvas>
<span>19&deg;</span>
</li>
<li class="col-md-3 col-sm-3 col-xs-3"><strong>Sunday</strong>
<canvas id="rain" width="50" height="50"></canvas>
<span>19&deg;</span>
</li>
<li class="col-md-3 col-sm-3 col-xs-3"><strong>Monday</strong>
<canvas id="sleet" width="50" height="50"></canvas>
<span>19&deg;</span>
</li>
<li class="col-md-3 col-sm-3 col-xs-3"><strong>Wednesday</strong>
<canvas id="snow" width="50" height="50"></canvas>
<span>19&deg;</span>
</li>
</ul>

这是我的初始化 JS:

<!--SkyCons-->  
<script type="text/javascript" src="js/vendors/skycons/skycons.js"></script>
<script>
var icons = new Skycons({"color": "#fff"}),
list = [
"clear-day", "clear-night", "partly-cloudy-day",
"partly-cloudy-night", "cloudy", "rain", "sleet", "snow", "wind",
"fog"
],
i;

for(i = list.length; i--; )
icons.set(list[i], list[i]);

icons.play();
</script>

这里是引用的 JS 文件的链接:

https://github.com/darkskyapp/skycons/blob/master/skycons.js

最佳答案

您应该使用适用于元素引用的版本,而不是 id

(并更改 html 以使用类而不是 id)

for(i = list.length; i--; ) {
var weatherType = list[i],
elements = document.getElementsByClassName( weatherType );
for (e = elements.length; e--;){
icons.set( elements[e], weatherType );
}
}

并将您的 html 更改为

   <li class="col-md-3 col-sm-3 col-xs-3"><strong>Saturday</strong>
<canvas class="snow" width="50" height="50"></canvas>
<span>19&deg;</span>
</li>
<li class="col-md-3 col-sm-3 col-xs-3"><strong>Sunday</strong>
<canvas class="rain" width="50" height="50"></canvas>
<span>19&deg;</span>
</li>
<li class="col-md-3 col-sm-3 col-xs-3"><strong>Monday</strong>
<canvas class="sleet" width="50" height="50"></canvas>
<span>19&deg;</span>
</li>
<li class="col-md-3 col-sm-3 col-xs-3"><strong>Wednesday</strong>
<canvas class="snow" width="50" height="50"></canvas>
<span>19&deg;</span>
</li>

如果您需要支持 IE8 及更早版本,您需要为 getElementsByClassName 函数使用此 polyfill:Polyfill for getElementsByClassName for particular uses

关于javascript - Skycons,不能两次显示相同的图标吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24572100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com