私は理解を得るための友人から、次のコードを借りてきましたが、私はここまでこだわって: -次のjavascriptコードはなぜ実行されますか?
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";
}
}
<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>
ので、コードがカッコソフトウェア上で完全に機能しているようです。しかし、(href)タグの下にある関数、javascript:callme()は決して定義されていません。
これは事前定義された関数ですか?あなたが見ることができるように私は他のJavaScriptファイルへの他のリンクを持っていないので、まだコードが実行されるようです。その後、私は次の出力を得る
そして、私はそれ stringbody+='<div id="menubar">'+jsobj.str[i].mitem+'</div></a>';
作るようにする場合には、私はその行を削除します - だから、明らかにそれがコードの冗長部分ではない..です
「」を完全に削除しないでください。 ''と同じ結果が表示されるはずです。 – Ryan
あなたは 'a'タグ全体を削除しています。そのため、スタイルが崩れてしまいます。しかし、関数 'callme'が存在しないとしても正しく表示されますが、アンカーをクリックするとエラーになります。 –
ああ、今、あなたのおかげで、あなたの両方を参照してください!私はこのような長い間、私の頭を壊してきました!おそらくあなたのどちらかが私が正しいものとして選択できる答えを書くことができましたか? –