Javascript 用单击顺序替换可单击单词
我想点击句子中的某个单词,然后点击顺序的编号来替换点击的单词。接下来,当我点击这个数字时,这个词会再次出现。我面临的问题对我来说很奇怪。当我在数字上单击右侧时这个数字的行为就像它是数字一样,尽管它是替换字符串,并且增加了一。当我按稍高于数字(!!!)时,该单词会正常显示,正如我所希望的那样 示例 这是我想处理的文本: 这是1个文本2到工作3(点击'the'、'want'和'on') 这是我想处理的1个文本3(单击“2”) 请记住,这个问题与这个问题密切相关Javascript 用单击顺序替换可单击单词,javascript,Javascript,我想点击句子中的某个单词,然后点击顺序的编号来替换点击的单词。接下来,当我点击这个数字时,这个词会再次出现。我面临的问题对我来说很奇怪。当我在数字上单击右侧时这个数字的行为就像它是数字一样,尽管它是替换字符串,并且增加了一。当我按稍高于数字(!!!)时,该单词会正常显示,正如我所希望的那样 示例 这是我想处理的文本: 这是1个文本2到工作3(点击'the'、'want'和'on') 这是我想处理的1个文本3(单击“2”) 请记住,这个问题与这个问题密切相关 这是我想要处理的文本 跨度{ /*这
这是我想要处理的文本
跨度{
/*这将保持跨度的宽度*/
显示:内联块;
/*这将使文本在跨度内居中*/
文本对齐:居中;
}
//单击时保留单词的数组
var vArray=[];
const hExample=document.getElementById('hExample');
//把句子分成一组单词
让jExample=hExample.innerHTML;
让words=jExample.split(“”);
//将每个单词用一个空格括起来
让内容=”;
for(const单词中的单词){
content+=`${word}`;
}
//将所有跨距添加到hExample
hExample.innerHTML=内容;
//点击一个单词
函数句柄或单击(evt){
//获取单击的跨度
const span=evt.target;
if(span.dataset.word){
//从span的“数据字”属性中提取字并以红色显示
span.innerHTML=span.dataset.word;
删除span.dataset.word;
span.style.color='红色';
//当单击数字时,从数组中取出单词
vArray=vArray.filter(item=>item!==span.innerHTML);
}否则{
//保持跨度的当前宽度
span.style.width=span.getBoundingClientRect().width+“px”;
//将单词存储在span的“数据单词”属性中
span.dataset.word=span.innerHTML;
//单击word后,将该单词放入数组中
push(span.dataset.word);
//用数字代替单词
span.innerHTML=vArray.length.toString().fontsize(5);
span.style.color='红色';
}
}
//聆听hExample中的点击
hExample.addEventListener('click',HandleOrdClick);
在else语句中,这一行:
span.innerHTML = vArray.length.toString().fontsize(5);
将范围转换为无法访问属性“data word”的标记
所以它永远不会进入if-else的前半部分。
使用将.fontsize(5)移动到新行
span.style.fontSize = "x-large";
应该解决这个问题那么,您的需求的第一部分是有效的,但是您做了什么来尝试让第二部分有效呢?具体的问题是什么,而不仅仅是您需要满足的要求?如果我替换span.innerHTML=arr.length.toString();span.innerHTML='-';它很好用。我不明白字符串“-”与字符串“arr.length.toString()”的行为有何不同,就是这样!!!我决不会想到这样的答案。非常感谢你!!!亲爱的斯科特,我也非常感谢你。深入了解知识并向他人学习是非常明智的。再次感谢您花时间和精力给出正确的解释。不客气,在控制台中添加几个console.logs()并将html与您希望看到的内容进行比较也不会有什么坏处