#1 - 2010-4-1 21:37
jamfer (因为没有'名字所以被忽视了...)
var hrefs = $('menu_' + key).getElementsByTagName('a');
            for(var j = 0; j < hrefs.length; j++) {
                hrefs[j].className = hrefs[j].href.substr(hrefs[j].href.indexOf('admincp.php?action=') + 19) == url ? 'tabon' : (hrefs[j].className == 'tabon' ? '' : hrefs[j].className);
            }

这是一段修改一个<a里边的class值的代码,红色部分是我需要修改的内容。

我的链接有一些变化,不再是"admincp.php?action=*"的形式了,变成了"*.php"这样的链接。我试着修改为

hrefs[j].className = hrefs[j].href.substring(0,hrefs[j].href.indexOf('.php')) == url ? 'tabon' : (hrefs[j].className == 'tabon' ? '' : hrefs[j].className);

但他无论如何都不work... 苦闷了
#2 - 2010-4-1 23:31
var hrefs = $('menu_' + key).find('a');

jquery对象没有getElementsByTagName方法吧。
不知道这样修改后可以吗。
#3 - 2010-4-2 08:03
hrefs[j].href.indexOf('.php'))
-------------------------------------
hrefs[j].href.indexOf('.php')+4)
#4 - 2010-4-2 10:58
(因为没有'名字所以被忽视了...)
谢谢楼上两位朋友解答。我已经解决了哈。3楼说的.php+4是不行的哦。因为我取得是.php前面的值。而hrefs[j].href.indexOf('.php')+4) 则跟原来的代码一样取得是后面的值。

我自己的解决办法:

hrefs[j].className = hrefs[j].getAttribute('href',2).substring(0,hrefs[j].getAttribute('href',2).indexOf('.php')) == url ? 'tabon' : (hrefs[j].className == 'tabon' ? '' : hrefs[j].className);

其实之前的方法之所以不行就是因为忘记了getElementsByTagName取出来的href值是带http...的。

其实可以偷个懒写成

hrefs[j].className = hrefs[j].getAttribute('href',2) == url + '.php' ? 'tabon' : (hrefs[j].className == 'tabon' ? '' : hrefs[j].className);

只不过.php后面就不能跟参数了,嘿嘿
#5 - 2010-4-3 22:18
用 URL rewrite不用改js
另外,用jquery的话可以把代码写得更干净一点
#6 - 2010-4-5 11:20
(bubble.oO)
貌似无用到jquery诶-.-
$只是自定义的document.getElementById的缩写吧。。。