【问题标题】:Changing pictures in a website gallery form更改网站图库表单中的图片
【发布时间】:2013-04-04 09:11:12
【问题描述】:

我已经尝试了大约一个星期,但无法解决我的问题。 我想要做的是有一个网页,基本上可以通过clicking a next or prev asp:button 滚动浏览 5 或 6 张图片。有人可以从头开始帮助我如何实现这一目标。

我正在使用 Visual Studio Web 开发人员,并且有一个使用母版页制作的空白网站。我想在自动生成的Default.apsx 文件中添加这个galary 函数。

我的图片名称是pic001.jpg; pic002.jpg; pic003.jpg等等

我想要的只是左边的按钮说上一张,它将带你到上一张图片,右边的按钮说下一张,它将显示下一张图片,中间是一张图片(改变的那个)

请帮助解决这个问题,我已经尝试过但非常失败, 非常感谢可以提供帮助的人

这是我尝试的一些代码:

默认.aspx 文件

<%@ Page Title="Default" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default"  %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server" >
    <script src="myJava.js" type="text/javascript"></script>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server" >
<table>
    <tr><td> GALLARY </td></tr> <!--Header-->
    <tr>
        <td> <asp:Button ID="Button1" runat="server" Text="Prev" OnClientClick="getPrevImage()"/> </td>
        <td> <img ID="pic" alt="" src="" runat="server" width="400" height="400" /> </td>
        <td> <asp:Button ID="Button2" runat="server" Text="Next" OnClientClick="getNextImage()"/> </td>
    </tr>
</table>
</asp:Content>

Default.aspx.cs 文件

public partial class Default : System.Web.UI.Page
{    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string script = string.Empty;
            script += "<script language='javascript'>";

            script += "init()";
            script += "</script>";
            ClientScript.RegisterClientScriptBlock(this.GetType(), "Error", script);
        }
    }
}

myJava.js 文件

var imagePath = new Array();
var imageIndex = 0;

function init(){
     addPath("pic001.jpg");
     addPath("pic002.jpg");
     addPath("pic003.jpg");
     addPath("pic004.jpg");
     addPath("pic005.jpg");

     getImagePath(0);
}

function addPath(path){
     var index = imagePath.length;
     imagePath[index++] = path;  
}

function getImagePath(index){
     var length = imagePath.length;

     if(index <= length){
        if(index >= 0){
            document.getElementById("MainContent_pic").src = imagePath[index];
            document.getElementById("MainContent_pic").alt = imagePath[index];
            imageIndex = index;
        }
     } else {
        document.getElementById("MainContent_pic").src = "DOES NOT EXIST";
        document.getElementById("MainContent_pic").alt = "DOES NOT EXIST";
     }
}

function getNextImage(){
     var length = imagePath.length;
     var index = imageIndex;
     if(index++ < length--){
        if(imagePath[index] != null){
            imageIndex = index;
            document.getElementById("MainContent_pic").src = imagePath[index];
            document.getElementById("MainContent_pic").alt = imagePath[index];
        }                                    
     }
}

function getPrevImage(){
     var index = imageIndex;
     if(index-- >= 0){
        if(imagePath[index] != null){
            imageIndex = index;
            document.getElementById("MainContent_pic").src = imagePath[index];
            document.getElementById("MainContent_pic").alt = imagePath[index];
        }   
     }
}

【问题讨论】:

  • 添加一些你尝试过的东西
  • 向我们展示你迄今为止尝试过的东西,也许它是可用的
  • 为什么需要使用&lt;asp:Button&gt;?这可以通过 html + jQuery 轻松完成。到目前为止你有什么?
  • 现有代码有什么问题?

标签: c# javascript asp.net image button


【解决方案1】:

这是一个使用 html 和 jquery 的方法,您可以在您的应用中轻松使用:

HTMl(请随意将&lt;a&gt; 替换为您想要的任何标签):

<a href="" class="previous">Previous</a>

<img src="1.jpg" class="display"/>
<img src="2.jpg" class="hide"/>
<img src="3.jpg" class="hide"/>
<img src="4.jpg" class="hide"/>

<a href="" class="next">Next</a>

jquery:

$(document).ready(function(){
    $(.previous).click(function(){
        var current = $(.display);
        //hide current img
        current.attr("class", "hide");
        //get previous img
        var pre = current.pre();
        if(pre !== null)
        {
            //display previous img if available
            pre.atrr("class", "display");
        }
        else
        {
            //dipslay last img if previous not available
            current.parent().find("img:last").attr("class", "display");
        }
    });

    $(.next).click(function(){
        var current = $(.display);
        //hide current img
        current.attr("class", "hide");
        //get next img
        var next = current.next();
        if(next !== null)
        {
            //display next img if available
            next.atrr("class", "display");
        }
        else
        {
            //display first img if next not available
            current.parent().find("img:first").attr("class", "display");
        }
    })
});

CSS(您可以将display: block 更改为inline 或任何适合您要求的内容):

img.display {
    display: block;
}

img.hide {
    display: none;
}

我不是专业的 html、css、jquery,所以希望这对你有所帮助

【讨论】:

  • 理论上看起来应该可以工作,但我对 JQuery 一无所知......我对 JavaScript 的了解有限。有没有办法使用 javascript 而不是 JQuery 来做到这一点?我什至不知道 JQuery 和 JavaScript 有什么区别
  • 你应该学习一点jquery,这会让你的生活更轻松。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多