我会使用document.getElementsByClassName,但IE不支持它.
所以我尝试了Jonathan Snook的解决方案:
function getElementsByClassName(node, classname) {
var a = [];
var re = new RegExp('(^| )'+classname+'( |$)');
var els = node.getElementsByTagName("*");
for(var i=0,j=els.length; i<j; i++)
if(re.test(els[i].className))a.push(els[i]);
return a;
}
var tabs = document.getElementsByClassName(document.body,'tab');
Run Code Online (Sandbox Code Playgroud)
......但IE仍然说:
Object不支持此属性或方法
任何想法,更好的方法,错误修复?
我宁愿不使用涉及jQuery或其他"笨重的javascript"的任何解决方案.
我得到了它的工作!
正如@joe提到的那样,函数不是一种方法document.
所以工作代码看起来像这样:
function getElementsByClassName(node, classname) {
var a = [];
var re = new RegExp('(^| )'+classname+'( |$)');
var els = node.getElementsByTagName("*");
for(var i=0,j=els.length; i<j; i++)
if(re.test(els[i].className))a.push(els[i]);
return a;
}
var tabs = getElementsByClassName(document.body,'tab'); …Run Code Online (Sandbox Code Playgroud) javascript internet-explorer class classname internet-explorer-8
例如,this.parentNode我想写this.p或不
document.getElementById('someid')写document.g('someid').当然这只是一个简单的例子,我只是想知道这样做的正确方法是什么.
(我知道我可以使用jQuery或Prototype,但我想了解它是如何在JS中完成的)
我已经将JavaScript插件"Skycons"连接到Yahoo天气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°</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°</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°</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°</span>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这是我的初始化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], …Run Code Online (Sandbox Code Playgroud)