我有一个网页上的2个框架,左框架正在填充来自JavaScript对象的国家名称列表。每个国家也是主要对象内的一个对象,并有4个名称/值属性。我使用附着在身体的onload以下功能:firefox Javascript document.write(onclick)引用错误未定义的函数
function populateList() {
var list = top.frames[0].document;
list.open()
list.write("<h2>Countries</h2><ul>");
for (name in euMem){
if(typeof name !== 'object'){
list.write('<li><a href=\"\" onclick=\"updateFrame(\'' + name + '\');\">' + name + '</a></li>');
}
}
list.write("</ul>");
list.close();
}
当用户点击该国的名字之一左其意在运行此函数:
function updateFrame(country) {
var infoFrame = top.frames[1].document;
infoFrame.open();
var size = Object.size(euMem[country]);
infoFrame.writeln("<h1>Information for " + country + "</h1>");
for(prop in euMem[country]){
infoFrame.writeln(prop + " : " + euMem[country][prop] + "<br>");
}
infoFrame.close();
}
这似乎在Chrome上工作正常,但在Firefox上,我得到参考错误,指出updateFrame未定义。当我将updateFrame直接硬编码到HTML中时,它的工作原理并不困难,但是当它使用document.write编写时,我得到了引用错误。
为什么不能在Firefox上使用?
编辑: 下面是一个简单的脚本,我写来测试这个最基本的版本:
<html>
<head>
<title>InfoPane</title>
<script type="text/javascript">
function test(name){
alert(name);
}
function load(){
document.write("<button onclick='test('John Doe');'>Alert Me!</button>");
}
</script>
</head>
<body onload="load();">
</body>
</html>
以上在Firefox上不工作...
我能得到这个代码作为一个基本的例子,但不能扩展到我的代码上面得到它的功能:
<html>
<head>
<title>InfoPane</title>
<script type="text/javascript">
function test(){
alert(this.name);
}
function load(){
var btn = document.createElement('button');
btn.name = 'John Doe';
btn.onclick = test;
btn.innerHTML = 'Alert Me!';
document.body.appendChild(btn);
}
</script>
</head>
<body onload="load();">
</body>
</html>
1.为什么使用框架? 2.你如何嵌入脚本和地点? – 2013-04-30 06:22:23
我使用框架,因为它是需要我们使用框架的类作业。脚本被嵌入到第一帧的HTML文件中。 – user1721944 2013-04-30 06:50:04