如何在javascript中穿透字符串

如何在javascript中穿透字符串,javascript,string,strikethrough,Javascript,String,Strikethrough,我想在Javascript中浏览文本,但我似乎无法让代码正常工作 var message = document.getElementById('helloWorld'); setTextContent(message, 'hello world!'.strike()); 非常感谢您的帮助。也希望不使用css就可以做到这一点 还应该提到,这些代码行位于另一个名为totalPackage()的函数中,该函数在用户单击按钮时运行。我要我的留言你好,世界!调用此其他函数时显示。如果#helloWorl

我想在Javascript中浏览文本,但我似乎无法让代码正常工作

var message = document.getElementById('helloWorld');
setTextContent(message, 'hello world!'.strike());
非常感谢您的帮助。也希望不使用css就可以做到这一点

还应该提到,这些代码行位于另一个名为totalPackage()的函数中,该函数在用户单击按钮时运行。我要我的留言你好,世界!调用此其他函数时显示。

如果
#helloWorld
是一个DIV,则可以设置其innerHTML属性

<div id="helloWorld"></div>

function setTextContent(msg, str) {
    msg.innerHTML = str;
}

var message = document.getElementById('helloWorld');
setTextContent(message, 'hello world!'.strike());

函数setTextContent(msg、str){
msg.innerHTML=str;
}
var message=document.getElementById('helloWorld');
setTextContent(消息'helloworld!'.strike());

这里有一把小提琴来演示:

如果您想按照问题中的格式来做,您可以制作一个字符串原型方法来处理它是非标准的,您可能会遇到浏览器兼容性问题

String.prototype.strike = function() {
    return '<div class="strike">'+ this +'</div>';
};

// <div class="strike"> hello world! </div>
var test = 'hello world!'.strike();

正确的
strike()
语法是
str.strike()

所以使用like

 setTextContent(message, 'hello world!'.strike());
JavaScript中已经有了一个方法,但它似乎是非标准的。 正常的实现只是将字符串包装在
strike
标记中。但是,请注意,结果不再是简单的文本,因此将文本节点的
textContent
属性设置为
'some string'。它只会在文档中将标记显示为纯文本

您始终可以实现多边形填充,如:

if (!(typeof String.prototype.strike === 'function')) {
    String.prototype.strike = function () {
        return '<strike>' + this + '</strike>';
    };
}
if(!(typeof String.prototype.strike=='function')){
String.prototype.strike=函数(){
返回“”+此+“”;
};
}
试试这个

var message = document.getElementById('helloWorld');
message.innerHTML='<del>helloworld</del>'
var message=document.getElementById('helloWorld');
message.innerHTML='helloworld'
使用

E,x,a,m,p,l,E!

函数删除线(文本){
返回文本
.拆分(“”)
.map(char=>char+'\u0336')
.加入(“”)
}


这正是我所拥有的,它显示的是:你好,世界!什么是
document.getElementById('helloWorld')其div或textbox?在HTML5中不支持strike不,不,不。已经有一个JavaScript方法str.strike():。你真的只是参考了w3学校吗?是非标准的。抱歉,我假设您认为问题出在
strike
方法上。这是一个很好的观点,指出MDN是一个更好的参考。虽然很明显,OP的问题是概念性的。你能给我们看看
setTextContent
?您最有可能设置的是
innerText
,而不是
innerHTML
请参见我的答案。它为您提供了一个工作示例。。。我应该在上面提到,但是我在另一个名为totalPackage()的函数中有这行代码,所以当我调用totalPackage()时,我希望它使用删除线编写字符串,而不使用任何CSS。没有DIV。DIV不是CSS。。。它是HTML。你需要学习一些基本的HTML和CSS。虽然Strike是非标准的,
也不推荐使用@这是Chrome的默认实现。在Chrome中是的,但这就是问题所在。它不适用于所有浏览器。@AustinBrunkhorst,这就是我建议使用polyfill的原因。即使是在MDN上,strike也是通过strike标签实现的。简单但又迷人的我希望你也能提到如何撤销它?:)@KickButtowski将
.map(…)
行替换为
.filter(char=>char!='\u0336')
。基本上,从字符串中查找并删除所有
\u0336
字符。您应该将其添加到您的post imho中@KickButtowski嗯,我不知道转义Unicode字符可以在正则表达式中工作。直到。是的,我想如果它有效的话会更简洁!用你的方法更新了答案。
var message = document.getElementById('helloWorld');
message.innerHTML='<del>helloworld</del>'