1

我正在尝试编写一些 Javascript 来隐藏一些仅包含回车的元素。我很欣赏解决这个问题的正确方法是停止创建这些元素,但不幸的是,在这种情况下这是不可能的。我正在尝试使用正则表达式来搜索不需要的元素,但运气不佳。我写的函数如下:

function HideEmptyP()
{

    var patt = (\\r)
    for(var i = 0;i<desc[i].length;i++);
    {
    var desc[i] = document.getElementsByClassName('sitspagedesc');
    var result[i] = patt.test(desc[i]);
        if (result[i] == true)
            {
            desc[i].style.display='none';
            }
        else
            {
            alert("No Match!");
            }
    }

我在 Web 控制台中遇到的错误是“语法错误:非法字符”。

感谢有关如何解决此问题的任何想法。

提前致谢。

4

4 回答 4

7

我正在尝试编写一些 Javascript 来隐藏一些仅包含回车的元素。

不需要正则表达式,只需将元素的innerHTML属性与进行比较"\\r",例如:

if (demo[i].innerHTML === "\\r") {
    // Remove it
}

但请注意,某些浏览器可能会转换单个回车符。您可能想检查"\\r", "\\n", 和一个空格。为此,您可能需要使用正则表达式。

您的正则表达式文字 ( (\\r)) 完全无效,值得阅读它们以了解正确的语法。要在 JavaScript 中编写正则表达式文字,请使用/分隔符。所以:/\\r/。要测试字符串是否仅包含\r\n或空格,您可以使用/^[\r\n ]+$/(这要求至少有一个字符匹配,并用于^指示字符串的开头和字符串$的结尾):

if (demo[i].innerHTML.match(/^[\r\n ]+$/) {
    // Remove it
}
于 2012-11-23T10:32:29.340 回答
1

您收到语法错误的原因是声明 var patt = (\r) 不正确,它应该类似于 var patt = '\r';

整个for循环也是错误的。

您应该在启动 for 循环之前定义 demo,而不是在其中,结果不必是数组,而只是一个普通变量

于 2012-11-23T10:42:24.770 回答
0

你的文字看起来很奇怪。

尝试var patt = /\r/;

于 2012-11-23T10:32:21.647 回答
0
var patt=/\n/gi   

应该管用。

额外的 i 标志表示不区分大小写。g 用于全局搜索。

于 2015-02-02T08:12:22.613 回答