我从朋友那里借了以下代码以获得理解,但我在这里坚持: -
function menubar() {
var menu = '{"str":[{"mitem":"Homepage","id":"1"},{"mitem":"About Us","id":"2"},{"mitem":"Contact Us","id":"3"},' + '{"mitem":"Feedback","id":"4"}]}'
var jsobj = JSON.parse(menu);
var stringbody = '';
for (i = 0; i < jsobj.str.length; i++) {
stringbody += '<a href="javascript:callme(' + jsobj.str[i].id + ');">' +
'<div id="menubar">' + jsobj.str[i].mitem + '</div></a>';
}
document.getElementById('menu').innerHTML = stringbody;
}
window.onload = function() {
var x = document.getElementById("items");
var y = document.getElementById("iconmain");
y.onclick = function() {
x.style.display = (x.style.display == "none") ? "block" : "none";
}
}
&#13;
<html>
<head>
<link href="page1.css" rel="stylesheet" type="text/css">
<script src="page1.js" type="text/javascript"></script>
</head>
<body>
<div id="header"><h1>XYZ Gym</h1></div>
<div id="menu"></div>
<script>
menubar();
</script>
<div id="iconmain">
<div id="icon"></div>
<div id="icon"></div>
<div id="icon"></div>
</div>
<div id="items">
<ul>
<hr>
<li><a href="#">item 1</a></li><hr>
<li><a href="#">item 2</a></li><hr>
<li><a href="#">item 3</a></li><hr>
<li><a href="#">item 4</a></li><hr>
<li><a href="#">item 5</a></li><hr>
</ul>
</div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br><br></p>
</body>
</html>
&#13;
因此,代码似乎在括号软件上完美运行。但是我们在(href)标签下有一个函数--javascript:callme(),我们从未定义过它!
这是预定义的功能吗?因为我看不到任何其他javascript文件的链接,但代码似乎仍在运行。
如果我删除该行以便我制作它
stringbody+='<div id="menubar">'+jsobj.str[i].mitem+'</div></a>';
答案 0 :(得分:0)
不,它不是预定义的功能,在Chrome中调试代码会显示此错误
VM196:1 Uncaught ReferenceError: callme is not defined
at <anonymous>:1:1
(anonymous) @ VM196:1
CSS样式应用于HTML,如果CSS中定义的选择器是在HTML中找到的,那么更改字符串应该是这样的,请注意我没有省略起始锚标记
stringbody+= '<a href="http://www.google.com">'+
'<div id="menubar">'+jsobj.str[i].mitem+'</div></a>';
可以使用任何链接代替http://www.google.com