我怎么能做出这样的事情?
<div id='myDiv' onload='fnName()'></div>
无法使用
window.onload = function () {
fnName();
};
or
$(document).ready(function () {fnName();});
div元素是动态的。 div内容由xml xsl生成。
有什么想法吗?
答案 0 :(得分:9)
onload
属性可能不会在<div>
上触发,如果你动态注入它(因为文档可能已经加载了,但它可能仍然可以工作......?) 。但是你可以通过简单地做这样的事情来轮询元素(类似于YUI的onContentAvailable):
// when the document has loaded, start polling
window.onload = function () {
(function () {
var a = document.getElementById('myDiv');
if (a) {
// do something with a, you found the div
}
else {
setTimeout(arguments.callee, 50); // call myself again in 50 msecs
}
}());
};
或者你可以改变标记(我对XSL一无所知)是这样的:
页面早些时候:
<script type="text/javascript">
function myDivInserted() {
// you're probably safe to use document.getElementById('myDiv') now
}
</script>
使用XSL生成的标记:
<div id="myDiv"></div>
<script type="text/javascript">
myDivInserted();
</script>
它有点hacky但它应该有用。
答案 1 :(得分:7)
每次dom更改时它都会通知您,例如将新div插入目标div或页面时。
我正在复制/粘贴exmple代码
// select the target node
var target = document.querySelector('#some-id');
// create an observer instance
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type);
});
});
// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true }
// pass in the target node, as well as the observer options
observer.observe(target, config);
// later, you can stop observing
observer.disconnect();
答案 2 :(得分:5)
如果你还没有使用jQuery,没有理由为此开始使用它,你可以写:
window.onload = function () {
fnName();
};
答案 3 :(得分:4)
你可以使用jQuery。以下代码将放在您的<head>
代码中。
$(document).ready(function() {
// Your fnNamt function here
});
修改强>
Kobi提出了一个很好的观点
你也可以写 $(文件)。就绪(函数(){fnNamt();});, 或者更简单地说, $(document).ready(fnNamt);,甚至 $(fnNamt)
答案 4 :(得分:3)
没有jQuery和普通的JS,例如:
<script type="text/javascript">
function bodyOnLoad() {
var div = document.getElementById('myDiv');
// something with myDiv
...
}
</script>
<body onload="bodyOnLoad()">
....
<div id='myDiv'></div>
....
</body>
答案 5 :(得分:2)
如何使用jQuery / ready(..)呢?
像这里:http://api.jquery.com/ready#fn
在您的问题中,
$(document).ready(function () {fnNamt();});
答案 6 :(得分:1)
我建议你使用jQuery
步骤:
1.从这里下载Jquery库http://code.jquery.com/jquery-1.5.min.js
2.在您的HTML中,head部分创建一个脚本标记并使用下面的代码。
$(document).ready(function(){
//在这里写你的代码..
});
答案 7 :(得分:1)
我有同样的问题,经过搜索我发现了这个。
在我的情况下,javascript附加索引html的头部来加载选项卡内容html文件,onload我想将该选项卡添加到dom,显示它并制作其他js东西以更改选项卡样式。< / p>
我添加了.onload = function(event) {...}
var link = document.createElement('link');
link.rel = 'import';
link.href = 'doc.html'
link.onload = function(event) {...};
link.onerror = function(event) {...};
document.head.appendChild(link);
这就像一个魅力,也许它可以帮助其他研究人员:)
我在HTML5 Imports: Embedding an HTML File Inside Another HTML File
上找到了它答案 8 :(得分:0)
我建议使用cicle-style func:
SwitchFUnc = false;
function FuncName(div_id) {
var doc = window!=nil ? window.document : document;
var DivExists = doc.getElementById(div_id);
if (DivExists) {
//something...
SwitchFunc = true; //stop the cicle
}
}
while (SwitchFunc!=true) {
FuncName('DivId');
}