为什么这不起作用?

时间:2012-11-08 14:15:24

标签: javascript html wrapper

var str="Hello World!"; 
var patt=/\x57/g;
var matched = str.match(patt);
document.write(matched.strike());

问题似乎是matched.strike()。使用matched只有它有效。那为什么呢?

2 个答案:

答案 0 :(得分:2)

.strike()方法对字符串进行操作,matched是一个数组。您必须取消引用第一个匹配才能看到正确的输出。

var str="Hello World!"; 
var patt=/\x57/g;
var matched = str.match(patt);
// Access first element of the matched array
document.write(matched[0].strike());

// Or via .pop() or .shift()
document.write(matched.pop().strike());
// or
document.write(matched.shift().strike());
// either returns "<strike>W</strike>"

String.strike() method is nonstandard,不应依赖于完整的浏览器支持。

答案 1 :(得分:1)

(非常旧)strike方法是String方法。 RegExp.match会返回不知道Array方法的strike

您的代码可以重写为:

var str = 'Hello World'.replace(/\x57/g,function(s){return s.strike();});
//=> Hello <strike>W</strike>orld