好吧,这可能只是一个愚蠢的问题,但我确信还有很多其他人不时会问同样的问题.我,我只是想以任何方式100%确定.有了jQuery,我们都知道这很精彩
$('document').ready(function(){});
Run Code Online (Sandbox Code Playgroud)
但是,假设我想运行一个用标准JavaScript编写的函数,没有库支持它,并且我想在页面准备好处理它时立即启动一个函数.什么是正确的方法来解决这个问题?
我知道我能做到:
window.onload="myFunction()";
Run Code Online (Sandbox Code Playgroud)
......或者我可以使用body标签:
<body onload="myFunction()">
Run Code Online (Sandbox Code Playgroud)
...或者我甚至可以在所有内容之后尝试在页面底部,但结尾body或html标记如:
<script type="text/javascript">
myFunction();
</script>
Run Code Online (Sandbox Code Playgroud)
什么是以jQuery方式发布一个或多个函数的跨浏览器(旧/新)兼容方法$.ready()?
我会使用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