Javascript 将文本追加到变量始终会产生相同的顺序
我有一个multiselect,每次发生更改事件时,我都希望所选项目div的值附加到文本体。我使用forEach循环来运行ajax请求,每次响应都被设置为文本体(在本例中是textarea)。如果我按顺序选择Javascript 将文本追加到变量始终会产生相同的顺序,javascript,Javascript,我有一个multiselect,每次发生更改事件时,我都希望所选项目div的值附加到文本体。我使用forEach循环来运行ajax请求,每次响应都被设置为文本体(在本例中是textarea)。如果我按顺序选择第1节然后选择第2节或者第2节然后选择第1节这两个部分的顺序总是相同的,这似乎并不重要。(第2节位于第1节顶部) 在这种情况下,值是字母的一部分。所以它总是写在介绍信的开头,这显然与我想要的相反 我原以为问题出在我用来设置textarea值的命令上,但我通过代码进行了更改,只将节添加到变量中
第1节
然后选择第2节
或者第2节
然后选择第1节
这两个部分的顺序总是相同的,这似乎并不重要。(第2节位于第1节顶部)
在这种情况下,值是字母的一部分。所以它总是写在介绍信的开头,这显然与我想要的相反
我原以为问题出在我用来设置textarea值的命令上,但我通过代码进行了更改,只将节添加到变量中,如body+=section
(在forEach中)和console.log
it。同样的事情也会发生
这是我的密码:
$('#my-select').change(function() {
//empties the textarea
tinymce.get('elm1').setContent("");
//Array of the selected values
let codes = $('#my-select').val();
codes.forEach(function(code) {
let data = {
action: 'getSectionByCode',
code: code
}
//returns an object
let sections = $.parseJSON($.ajax({
url: '/modules/ajax/ajax_handler.php',
type: "POST",
data:data,
async: false
}).responseText);
//Set the contents of the editor to be section.body
tinymce.get("elm1").execCommand('mceInsertContent', false, sections.body);
//Alternative tried
//body += sections.body
})
});
因此,在每张图片中,multiselect右侧的部分按2种不同的顺序排列,但左侧的内容是相同的
粗体文本是字母的开头。因此,如果我理解正确的话,每张图片都在底部,您应该能够在循环之前对
代码
数组进行排序,以确定节的顺序。您可以附加一个屏幕截图吗?或者可以在codesandbox/codepen/JSFIDLE上复制一个示例appreciated@TasosBu我用截图编辑了它,我相信问题在于t MCEINSERCONTENT方法。它说它“在插入符号位置插入内容”。您是否尝试过使用prevContent+newContent
设置内容()?@TasosBu我认为这也是问题所在。但是就像我说的,如果我不使用tinymce,只将sections.body
赋值给一个变量,每次它都给出相同的顺序。我不介意是否有办法将其按正确的顺序设置为变量。因为这样我就可以使用变量了