我的 javascript 遇到了一个我无法解释的问题。这是 html:
<body>
<div id='slidecarousel' class='slide1' onclick='No functions can be here'>
<div id="sliderButton" onclick='pageSlider(this)'>Next Slide</div>
<div id='piece of slider...'></div>
<div...></div>
...
</div>
</body>
这是 javascript 和错误:
function pageSlider(elem)
{
var pDiv = $(elem).parent('#slidecarousel')
if ( pDiv.className.match(/(?:^|\s)slide1(?!\S)/) ){
**Uncaught TypeError: cannot call method 'match' of undefined**
pDiv.className = "slide2";
} else {
pDiv.className = "SlideErr";
}
}
最佳答案
pDiv 是一个 jQuery 对象,而不是 DOM 元素,因此它没有 className 属性。您可以获得第一个 DOM 元素:
pDiv[0]
所以,只需更改一下:
var pDiv = $(elem).parent('#slidecarousel')
为此:
var pDiv = $(elem).parent('#slidecarousel')[0];
作为一个额外的变化,这没有多大意义:
var pDiv = $(elem).parent('#slidecarousel')
如果您只想要#slidecarousel
对象,那么只需使用:
var pDiv = $('#slidecarousel')[0];
因为无论如何在整个页面中只能有一个#slidecarousel
对象。
或者,如果你只想要 elem
的父级,那么使用这个:
var pDiv = elem.parentNode;
或者,您也可以像这样使用 .closest()
:
var pDiv = $(elem).closet(".slide1")[0];
关于javascript - 更改父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071012/