Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用拆分和联接的替换代码只适用于单个单词输入,而不适用于整个单词_Javascript_Html - Fatal编程技术网

Javascript 使用拆分和联接的替换代码只适用于单个单词输入,而不适用于整个单词

Javascript 使用拆分和联接的替换代码只适用于单个单词输入,而不适用于整个单词,javascript,html,Javascript,Html,我有一个代码来替换输入字符串,并用其他单词替换特定单词。当我在输入中输入一个特定的单词时,这就起作用了 例如: “棕色”替换为“土色” 但如果我加上: “一只敏捷的棕色狐狸跳过一只懒狗”并添加“一只敏捷的棕色狐狸跳过一个古怪的好男孩”,它不起作用,并在输出字段中显示输入,而不是指定的输出 这是我的密码: HTML: <input id="input_1" type="text" value="" oninput="fun

我有一个代码来替换输入字符串,并用其他单词替换特定单词。当我在输入中输入一个特定的单词时,这就起作用了

例如:

“棕色”替换为“土色”

但如果我加上:

“一只敏捷的棕色狐狸跳过一只懒狗”并添加“一只敏捷的棕色狐狸跳过一个古怪的好男孩”,它不起作用,并在输出字段中显示输入,而不是指定的输出

这是我的密码:

HTML:

<input id="input_1" type="text" value="" oninput="funcinput1()">
<button id="button_1 ml-auto copy-btn btn_cpy">translate</button>

<textarea id="output_1"></textarea>
function funcinput1() 
{

  let translator = {
    "a quick brown fox jumps over a lazy dog": "a quick bwown fox jumps ovew a wazy good boy",
    "BROWN": "soil colored",
    "quick": "fast",
    "the": "dee",
    "n":"\ud83d\udc68\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd"
  };
  
  var input = document.querySelector("#input_1");
  var output = document.querySelector("#output_1");
  
  input.addEventListener("input", () => {
    let words = input.value.split(' ');
    let translated = words.map(word => translator[word] || word);
    output.value = translated.join(' ');
  })
}
我仍然是一个初学者,所以任何帮助解决这个问题将不胜感激

下面是一个堆栈片段:

函数funcinput1()
{
让翻译器={
“一只敏捷的棕色狐狸跳过一只懒狗”:“一只敏捷的棕色狐狸跳过一个古怪的好男孩”,
“棕色”:“土壤颜色”,
“快”:“快”,
“the”:“dee”,
“n”:“\ud83d\udc68\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd”
};
var input=document.querySelector(“#input_1”);
var output=document.querySelector(“#output_1”);
input.addEventListener(“输入”,()=>{
让words=input.value.split(“”);
让translated=words.map(word=>translator[word]| | word);
output.value=translated.join(“”);
})
}

翻译

当您输入完整短语时,您将其拆分并分别检查每个单词。因此,您永远不会在翻译对象中查找属性
“快速棕色狐狸跳过懒狗”
,而是查找
“快速”
“快速”
“棕色”
,等等

如果您还想查看整个内容,请在拆分之前执行以下操作:

var input = document.querySelector("#input_1");
var output = document.querySelector("#output_1");

input.addEventListener("input", () => {
    let text = input.value;
    let translated = translator[text]; // See if the whole thing has a translation
    if (!translated) {
        // It doesn't, try individual words
        let words = input.value.split(" ");
        translated = words.map(word => translator[word] || word).join(" ");
    }
    output.value = translated;
});
实例:

函数funcinput1(){
让翻译器={
“一只敏捷的棕色狐狸跳过一只懒狗”:“一只敏捷的棕色狐狸跳过一个古怪的好男孩”,
“棕色”:“土壤颜色”,
“快”:“快”,
“the”:“dee”,
“n”:“\ud83d\udc68\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffd”
};
var input=document.querySelector(“#input_1”);
var output=document.querySelector(“#output_1”);
input.addEventListener(“输入”,()=>{
让text=input.value;
let translated=译者[文本];
如果(!翻译){
让words=input.value.split(“”);
translated=words.map(word=>translator[word]| | word).join(“”);
}
output.value=已翻译;
});
};

翻译

想想你的
拆分(“”)
调用你将一个字符串拆分成一个单词。。。。如何匹配多个单词?您好,感谢您的及时回复和快速修复。您提供的代码对于复制和粘贴的文本可以很好地工作,但是,如果您手动编写整个strong,转换器将无法工作!下面是一个代码应该如何工作的示例:要么键入字符串,要么粘贴它,两者都是translated@AhmadWahid-如果我运行上面的代码段并手动键入短语,则在我键入最后一个字符时,它会在结尾处被翻译。听起来可能是你打错了?嗨,是的,我打字的时候打错了。感谢您的澄清和帮助!你真棒!