0

我敢肯定这很容易,我也看到过类似的问题,但没有人能帮助我弄清楚为什么这不起作用。currentPage没有人能告诉我为什么当设置为faqor时这不会捕获contact吗?

<script type="text/javascript">
                function init() {
                document.getElementById('searchSubmit').onclick=function(){
                        var uriArgs = window.location.search;
                        var currentPage = uriArgs.match(/page=?(\w*)/);
                        if ( (currentPage == null) || (currentPage == 'faq') || (currentPage == 'contact') ) {
                                currentPage = "index";
                                document.getElementById('searchHidden').value = currentPage;
                        }
                        else {
                                document.getElementById('searchHidden').value = currentPage[1];
                        }
                }
                }
                window.onload=init;
        </script>

我设置了一个弹出警报,这样我就可以看到它是否被正确设置为faqor contact,所以我不确定为什么该if语句没有捕捉到这一点。

提前致谢!

4

2 回答 2

2

如果有匹配,String.match将返回数组索引 1 处的捕获组。例子:

> 'page=sdfsfsdf'.match(/page=?(\w*)/)
["page=sdfsfsdf", "sdfsfsdf"]

因此,您需要查看由返回的数组的内部match(假设它不是null)。

if (currentPage == null || currentPage[1] == 'faq' || currentPage[1] == 'contact') {
    /* ... */       
}
于 2012-10-04T18:50:47.220 回答
0

您的问题不在于if- 语句,而在于match方法的结果:它返回匹配和匹配组的数组 - 您想与第一个匹配组进行比较。

var match = window.location.search = uriArgs.match(/page=?(\w*)/),
    currentPage = false;
if (match != null)
    currentPage = match[1];

if ( !currentPage || currentPage=='faq' || currentPage=='contact' ) {
    // do something
}
于 2012-10-04T18:52:21.187 回答