找回密码
 立即注册
搜索
查看: 386|回复: 15

有没有方法判断一个字符在数组里面的位置?(ArrayList)

[复制链接]

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
发表于 2005-4-8 17:39:30 | 显示全部楼层 |阅读模式
我使用ArrayList建立了一个数组

比如: dim XXX as new ArrayList()

里面内容是:A,B,C,D,E,F,G

我希望用户输入C,那么程序就判断字符C在XXX里面的位置(比如现在的结果是XXX.item(3))

然后在浏览器输出:C在数组的位置是"3"

如果用户点击"上一个"

浏览器就输出: B

如果用户点击"下一个"

浏览器就输出: D


但是这个判断过程和上一个,下一个的判断过程应该怎么写呢?

我的写法是:

dim pid as string
dim a as string ,b as string

a=Cstr(xxx.item())
b=request("input")
pid = instr(a,b)

得到结果是0,郁闷啊~~~~

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-4-8 18:53:13 | 显示全部楼层
使用ArrayList没结果,后来我使用JavaScript写数组

大概代码是这样

<script language="JavaScript">
go="D"
fax = new Array("A", "B", "C", "D","E", "F", "G" )
var tempStr = ""
for (var i=0; i<fax.length; i++)
tempStr += fax
if (tempStr=go)
{
document.write (tempStr)
}
</script>

运行这个东西,你会发现输出结果是D
当然这个不是我想要的结果

我希望输出"D的位置是4",又应该怎么写呢?
回复

使用道具 举报

42

主题

835

回帖

1167

积分

金牌会员

积分
1167
发表于 2005-4-8 19:50:29 | 显示全部楼层
最初由 coolfax 发布
[B]使用ArrayList没结果,后来我使用JavaScript写数组

大概代码是这样

<script language="JavaScript">
go="D"
fax = new Array("A", "B", "C", "D","E", "F", "G" )
var tempStr = ""
for (var i=0; i<fax.length; i++)
tempStr += fax
if (tempStr=go)
{
document.write (tempStr)
}
</script>

运行这个东西,你会发现输出结果是D
当然这个不是我想要的结果

我希望输出"D的位置是4",又应该怎么写呢? [/B]


javascript我是不懂
if (tempStr=go)  -------是=还是==啊?
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-4-8 20:25:30 | 显示全部楼层
最初由 judite 发布
[B]javascript我是不懂
if (tempStr=go)  -------是=还是==啊? [/B]


是=

==运行不了
回复

使用道具 举报

62

主题

864

回帖

1296

积分

金牌会员

积分
1296
发表于 2005-4-8 23:14:00 | 显示全部楼层
这个代码行不?


  1. <script language="JavaScript">
  2. fax = new Array("A", "B", "C", "D","E", "F", "G" );
  3. var c = "D";
  4. function findOne(ch){
  5.         var i = 0;
  6.         for (; i<fax.length; i++){
  7.                 if (ch==fax[i])
  8.                         break;
  9.         }
  10.         return i;
  11. }
  12. function preone(){
  13.         var index = findOne(c);
  14.         index--;
  15.         if (index<0)
  16.                 index= 0;
  17.         c = fax[index];
  18.         output(index);
  19. }
  20. function nextone(){
  21.         var index = findOne(c);
  22.         index++;
  23.         if (index>=fax.length)
  24.                 index = fax.length-1;
  25.         c = fax[index];
  26.         output(index);
  27. }
  28. function findIt(){
  29.         c = what.value;
  30.         var index = findOne(c);
  31.         output(index);
  32. }
  33. function output(index){
  34.         what.value = fax[index];
  35.         ch.innerText = fax[index]+"["+index+"]";
  36. }
  37. </script>
  38. 查找: <INPUT id=what TYPE="text" NAME="c" value="D">
  39. <INPUT TYPE="button" onclick="findIt();" value="go">
  40. <BR>
  41. 查找结果: <span id=ch></span><BR>
  42. <INPUT TYPE="button" onclick="preone();" value="<<">
  43. <INPUT TYPE="button" onclick="nextone();" value=">>">
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-4-10 18:47:45 | 显示全部楼层
:0

Robin真是万能的高手啊~~~

我现在是用SQL处理的

生成“首页”“上一页”“下一页”“尾页”

这样的效果

但是要执行4次SQL操作,获得4个ID,数据库大的话,非常耗资源

我明天就试试采用你的方法

使用数组的话,只需要执行一次SQL,读取所有ID,然后在点击“首页”“上一页”“下一页”“尾页”的时候,直接在内存调用ID就可以了,效率非常高



:)
回复

使用道具 举报

62

主题

864

回帖

1296

积分

金牌会员

积分
1296
发表于 2005-4-10 20:24:58 | 显示全部楼层
数据库当然要采用sql操作数据了
关键是分页后, 读取少量的数据到客户端

这个方法不适合把大量的数据读取到浏览器中!
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-4-11 10:44:15 | 显示全部楼层
:MM

严重感谢 Robin 大侠的帮忙

我的东西做出来了,不过还有些小问题需要请教你

演示地址:
http://www.coolfax.net/bbs/photo ... =23&photoid=226

下面是我修改过的版本

<script language="JavaScript">
var username="fax";
var collid="23";
fax = new Array( "229","228","227","226","225","224","223","222","221","0");
var c = "226";

function findOne(ch){
        var i = 0;
        for (; i<fax.length; i++){
                if (ch==fax)
                        break;
        }
        return i;
}
function preone(){
        var index = findOne(c);
        index--;
        if (index<0)
                index= 0;
        c = fax[index];
        var url="photoview.aspx?username="+username+"&collid="+collid+"&photoid="+c
        window.location =url;
}

function nextone(){
        var index = findOne(c);
        index++;
        if (index>=fax.length)
                index = fax.length-1;
        c = fax[index];
        var url="photoview.aspx?username="+username+"&collid="+collid+"&photoid="+c
        window.location =url;
}

function findIt(){
        c = 226;
        var index = findOne(c);
        output(index);
}
function output(index){
document.write ( fax[index]+"["+index+"]")

}
        findIt();
</script>

<BR> <BR>
<A HREF="#" onclick="preone();">上一张</A>
<A HREF="#" onclick="nextone();">下一张</A>
现在有2个问题需要请教一下:

1.由于数组里面的内容是使用ASP.NET生成,所以需要在数组最后加0
不然就会变成fax = new Array( "229","228","227","226","225","224","223","222","221",);

最后多了个逗号,导致出错。

但是加了0之后,导致点击到最后一张图片的时候出错,因为photoid=0是不存在的

能不能在JS中判断,如果内容为:0,那么点击“下一张”按钮就无效果呢?

2。能不能再帮我添加2个“首张”,“尾张”按钮。点击“首张”,就跳到数组第一个数字,点击“尾张”,就跳到倒数第2个数字呢?(因为要避开0值)


;13
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-4-11 11:10:31 | 显示全部楼层
我研究了一下,首页的代码应该这样写:

.....

function first(){
c = fax[0];
var url="photoview.aspx?username="+username+"&collid="+collid+"&photoid="+c
window.location =url;
}

.....

<A HREF="#" onclick="first();">首张</A>
回复

使用道具 举报

1678

主题

5167

回帖

9302

积分

荣誉版主

沉痛悼念小于……

积分
9302
 楼主| 发表于 2005-4-11 15:22:25 | 显示全部楼层
:) 自己瞎琢磨了一下

动手完成了这个JS

请多多指点

<script language="JavaScript">
var username="fax";
var collid="23";
var photocoll="色影无忌";

fax = new Array( "229","228","227","226","225","224","223","222","221","0");
var c = "229";

function findOne(ch){
        var i = 0;
        for (; i<fax.length; i++){
                if (ch==fax)
                        break;
        }
        return i;
}

function first(){
c = fax[0];
var url="photoview.aspx?photocoll="+photocoll+"&username="+username+"&collid="+collid+"&photoid="+c
window.location =url;
}

function preone(){
        var index = findOne(c);
        index--;
        if (index<0)
                index= 0;
        c = fax[index];
        var url="photoview.aspx?photocoll="+photocoll+"&username="+username+"&collid="+collid+"&photoid="+c
        window.location =url;
}

function nextone(){
        var index = findOne(c);
        index++;
        if (index>=fax.length)
                index = fax.length-1;
        c = fax[index];
        if (c==0)          return;
var url="photoview.aspx?photocoll="+photocoll+"&username="+username+"&collid="+collid+"&photoid="+c
window.location =url;
}

function last(){
                lastindex= fax.length-2;
        c = fax[lastindex];
var url="photoview.aspx?photocoll="+photocoll+"&username="+username+"&collid="+collid+"&photoid="+c
        window.location =url;
}

function findIt(){
        c = 229;
        var index = findOne(c);
}
        findIt();
</script>


<A HREF="#" onclick="first();">首张</A>
<A HREF="#" onclick="preone();">上一张</A>
<A HREF="#" onclick="nextone();">下一张</A>
<A HREF="#" onclick="last();">尾张</A>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-18 17:01 , Processed in 0.096584 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表