尝试创建轮播效果时出错

时间:2018-06-27 10:01:34

标签: javascript jquery html css carousel

我正在尝试为我的网站创建轮播效果,但是出现问题。我的代码如下,但是当我尝试单击其中一个按钮时,出现错误消息

Uncaught ReferenceError: slide is not defined
at HTMLButtonElement.onclick (index.html:22)

function slide(dir){
	var item_width = $('#carousel_ul li').width();
	if(dir == 'left'){
		var original_indent = $('#carousel_ul').css('left');
		var new_indent = parseInt(original_indent) + item_width;
		$('#carousel_ul').css('left': new_indent);
	}else if(dir == 'right'){
		var original_indent = $('#carousel_ul').css('left');
		var new_indent = parseInt(original_indent) - item_width;
		$('#carousel_ul').css('left': new_indent);
	}
}
#carousel_inner{
	float:left;
	width:600px;
	overflow:hidden;
}
#carousel_ul{
	position:relative;
	left:-200px;
	list-style:none;
	margin:0px;
	padding:0px;
	width:9999px;
}
#carousel_ul li{
	float:left;
	width:200px;
	padding:0px;
	height:200px;
	background:transparent;
	margin:0px;
}
#left_scroll,#right_scroll{
	float:left;
	margin-left:5px;
	margin-right:5px;
	height:150px;
	width:50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="carousel_container">
	<div id="left_scroll"><button onclick="slide('left');">prev</button></div>
	<div id="carousel_inner">
		<ul id="carousel_ul">
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
			<li><img src="http://via.placeholder.com/150x150"></li>
		</ul>
	</div>
	<div id="right_scroll"><button onclick="slide('right');">next</button></div>
</div>

我也希望尝试将其陷入无限循环,并且不确定如何解决这个问题。

我在想类似的东西:

$('#carousel_ul li:first').after($('#carousel_ul li:last'));
$('#carousel_ul li:last').before($('#carousel_ul li:first'));

任何帮助或建议,将不胜感激。

我知道有很多不同的预制旋转木马,但我想自己弄清楚。

1 个答案:

答案 0 :(得分:3)

包含无限循环的已更新JS文件:

function slide(dir){
    var item_width = $('#carousel_ul li').outerWidth();
    if(dir == 'left'){
        var original_indent = $('#carousel_ul').css('left');
        var new_indent = parseInt(original_indent) + item_width;
        $('#carousel_ul li:first').before($('#carousel_ul li:last'));
    }else if(dir == 'right'){
        var original_indent = $('#carousel_ul').css('left');
        var new_indent = parseInt(original_indent) - item_width;
        $('#carousel_ul li:last').after($('#carousel_ul li:first'));
    }
}