以下程序中使用的功能.... 为什么我们在函数mopen('m1')中使用单引号而不是mopen(m1)
<ul id="sddm">
<div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
<a href="#">HTML DropDown</a>
<a href="#">DHTML DropDown menu</a>
<a href="#">JavaScript DropDown</a>
<a href="#">DropDown Menu</a>
<a href="#">CSS DropDown</a>
</div>
</li>
<li>
<a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">Home</a>
答案 0 :(得分:8)
mopen(m1)
将m1
声明为可执行文件作为函数mopen
的参数。
mopen('m1')
将字符串文字'm1'
作为函数mopen
的参数。
<强>更新强>
相应更新@ Frogmouth和@ MazeHatter的评论:
在您的情况下,mopen(m1)
会触发ReferenceError: m1 is not defined
,除非您的javascript代码中的变量m1
被定义为a global。
答案 1 :(得分:2)
这当然取决于mopen()的作用。奇怪的是,我必须为项目借用与你相同的代码,mopen()看起来像这样:
function mopen(id) {
// cancel close timer
mcancelclosetime();
// close old layer
if(ddmenuitem != null) ddmenuitem.style.visibility = 'hidden';
// get new layer and show it
ddmenuitem = document.getElementById(id);
ddmenuitem.style.visibility = 'visible';
}
您在此处看到您发送的参数是 id ,然后将其发送到 document.getElementById(id);
getElementById()需要一个字符串,即HTML中菜单项的id。
在这种情况下
<div id="m1"
所以你传入字符串“m1”。
没有引号 m1 是一个变量引用。由于您没有名为 m1 的变量,如果您尝试阅读它,则会导致错误。
答案 2 :(得分:0)
mopen('m1'); //you pass m1 as a string
mopen(m1); //mp1 an object or a variable
答案 3 :(得分:0)
var m1="Shoaib"
mopen();
function mopen(methodOpen){
alert(methodOpen+" is opened");
}
第一个案例输出将在警告框中为Shoaib is opened
,因为m1
被视为您传递给方法的变量。
第二种情况,您将direct value
作为字符串&#39; m1&#39;
因此,警报框中的输出将为m1 is opened
。
第三种情况,因为您没有传递任何变量,因此它将采用未定义的
因此输出将为undefined is opened