Javascript:带“的函数;这";未定义
我是Javascript新手,正在尝试编写一个函数来更改某些文本的颜色,但是“this”始终作为未定义返回,并且不更改文本的颜色。 这是代码,我非常感谢您的帮助Javascript:带“的函数;这";未定义,javascript,Javascript,我是Javascript新手,正在尝试编写一个函数来更改某些文本的颜色,但是“this”始终作为未定义返回,并且不更改文本的颜色。 这是代码,我非常感谢您的帮助 <h1> <ul><div class="info" id="info" onclick="this.style.color= '#9DC8BA'">INFO </div></ul> <ul><div class="menu" id="
<h1>
<ul><div class="info" id="info" onclick="this.style.color= '#9DC8BA'">INFO
</div></ul>
<ul><div class="menu" id="menu" onclick="test1()"<!--this is where the problem is-->MENU</div></ul>
必须将DOM元素的引用传递给函数
<div class="menu" id="menu" onclick="test1(this)">/div>
function test1(obj) {
obj.style.color= '#9DC8BA';
}
旁注:类的名称和div的id似乎是相同的,这不是一个好的做法。
始终记住类对应一组元素,ID对应唯一的元素。必须将DOM元素的引用传递给函数
<div class="menu" id="menu" onclick="test1(this)">/div>
function test1(obj) {
obj.style.color= '#9DC8BA';
}
旁注:类的名称和div的id似乎是相同的,这不是一个好的做法。
请始终记住,类对应于一组元素,ID对应于唯一元素。test1函数不是作为上下文在div元素上执行的,而是在窗口上执行的 这样做:
onclick="test1(this)"
在功能上:
function test1(div) {
div.style.color = '#9DC8BA';
}
test1函数不是作为上下文在div元素上执行,而是在窗口上执行 这样做:
onclick="test1(this)"
在功能上:
function test1(div) {
div.style.color = '#9DC8BA';
}
Html代码
<h1>
<ul><div class="info" id="info" onclick="this.style.color= '#9DC8BA'">INFO
</div></ul>
<ul><div class="menu" id="menu" onclick="test1(this)">MENU</div></ul>
</h1>
Html代码
<h1>
<ul><div class="info" id="info" onclick="this.style.color= '#9DC8BA'">INFO
</div></ul>
<ul><div class="menu" id="menu" onclick="test1(this)">MENU</div></ul>
</h1>
在html中编写
onclick
时,它会生成新函数本身。
在您的例子中,它类似于function(){test1()}
此函数中的此
是您需要的,但是test1中的此
未定义
您可以使用this
作为test1
... onclick="test1(this)" ...
和JS
function test1(obj) {
在test1
... onclick="test1(this)" ...
或者从javascript中设置函数onclick
属性,如:
var menu = document.getElementById('menu');
menu.onclick = test1;
在这种情况下,test1中的这个
正是您所需要的。当您在html中编写onclick
时,它会自己生成新函数。
在您的例子中,它类似于function(){test1()}
此函数中的此
是您需要的,但是test1中的此
未定义
您可以使用this
作为test1
... onclick="test1(this)" ...
和JS
function test1(obj) {
在test1
... onclick="test1(this)" ...
或者从javascript中设置函数onclick
属性,如:
var menu = document.getElementById('menu');
menu.onclick = test1;
在这种情况下,测试1中的这个
正是您所需要的。非常感谢您,普拉布,我很抱歉为这么简单的解决方案浪费您的时间,但谢谢您。他不必非得
。还有另一种解决方法。@Epsilon:很抱歉我错过了一些东西。@Prabhu你的解决方法非常有效,只是有另一种方法,这就是我要说的。如果您从JavaScript设置函数,那么这个
将起作用。非常感谢您,Prabhu,我很抱歉为这么简单的解决方案浪费您的时间,但谢谢您。他不必必须
。还有另一种解决方法。@Epsilon:很抱歉我错过了一些东西。@Prabhu你的解决方法非常有效,只是有另一种方法,这就是我要说的。如果您从JavaScript设置函数,则此
将起作用。您得到解决方案了吗?将=test1()
更改为=test1(this)
,将函数test1()
更改为函数test1(div){div.style.color='#CCC'}
。您的标记无效,div不能是UL的子级。在非严格模式下,这永远不会是未定义的。如果未在调用中或通过绑定进行设置,则默认为全局(浏览器中的窗口)对象。控制台可能正在抱怨window.style未定义。您得到解决方案了吗?将=test1()
更改为=test1(this)
,将函数test1()
更改为函数test1(div){div.style.color='#CCC'}
。您的标记无效,div不能是UL的子级。在非严格模式下,这永远不会是未定义的。如果未在调用中或通过绑定进行设置,则默认为全局(浏览器中的窗口)对象。控制台可能正在抱怨window.style未定义。这不是“上下文”,而是一个参数。;-)我解释了当前的问题。作为解决方案,上下文将作为参数传递。这不是“上下文”,而是的一个参数。;-)我解释了当前的问题。作为解决方案,上下文将作为参数传递。