Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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 - Fatal编程技术网

将文本添加到单个文本区域-按段落分隔(使用javascript)

将文本添加到单个文本区域-按段落分隔(使用javascript),javascript,Javascript,我发现这个答案已经有所帮助,但没有回答这个问题: 以此为例: 单击下面所有三个列表项将显示“HelloWorldEarthlings” 你好 世界 地球人 函数addText(事件){ var targ=event.target | | event.src元素; document.getElementById(“alltext”).value+=target.textContent | | target.innerText; } 我想添加一个列表,然后将每个列表中的点击区分到各自的段落中 例

我发现这个答案已经有所帮助,但没有回答这个问题:

以此为例: 单击下面所有三个列表项将显示“HelloWorldEarthlings”


  • 你好
  • 世界
  • 地球人
  • 函数addText(事件){ var targ=event.target | | event.src元素; document.getElementById(“alltext”).value+=target.textContent | | target.innerText; }
    我想添加一个列表,然后将每个列表中的点击区分到各自的段落中

    例如,我想单击下面每个列表上的第一个选项:

    <textarea id="alltext"></textarea>
    <ol onclick="addText(event)">
    <li>Hello</li>
    <li>Greetings</li>
    <li>Salutations</li>
    </ol>
    
    <ol onclick="addText(event)">
    <li>Humans!</li>
    <li>Peasants?</li>
    <li>Earthlings.</li>
    </ol>
    <script>
    function addText(event) {
        var targ = event.target || event.srcElement;
        document.getElementById("alltext").value += targ.textContent || targ.innerText;
    }
    </script>
    
    
    
  • 你好
  • 问候
  • 问候
  • 人类
  • 农民
  • 地球人
  • 函数addText(事件){ var targ=event.target | | event.src元素; document.getElementById(“alltext”).value+=target.textContent | | target.innerText; }
    以某种方式打印:

    <textarea id="alltext"></textarea>
    <ol onclick="addText(event)">
    <li>Hello</li>
    <li>Greetings</li>
    <li>Salutations</li>
    </ol>
    
    <ol onclick="addText(event)">
    <li>Humans!</li>
    <li>Peasants?</li>
    <li>Earthlings.</li>
    </ol>
    <script>
    function addText(event) {
        var targ = event.target || event.srcElement;
        document.getElementById("alltext").value += targ.textContent || targ.innerText;
    }
    </script>
    
    你好

    人类


    编辑:我想列出十个以上的列表,而不仅仅是两个

    如果您想要文本段落:

    document.getElementById("alltext").value += "\t" + (targ.textContent || targ.innerText) + "\n";
    
    
    
  • 你好
  • 问候
  • 问候
  • 人类
  • 农民
  • 地球人
  • 函数addText(事件){ var targ=event.target | | event.src元素; document.getElementById(“alltext”).value+=“\t”+(target.textContent | | target.innerText)+“\n”; }
    以下是几种可能的解决方案,您可以选择您最喜欢的解决方案

    将所有内容附加到具有换行符的单个文本区域:

    函数addText(事件){
    var targ=event.target | | event.src元素;
    document.getElementById(“alltext”).value+=String.fromCharCode(10)+String.fromCharCode(10)+(target.textContent | | target.innerText);
    }
    
    
  • 你好
  • 问候
  • 问候
  • 人类
  • 农民
  • 地球人

  • 看来我采取的方法与这里使用的其他方法略有不同。我选择在运行时执行所有操作,因此您不必预先计算任何内容。只要把你的数据放到页面上,它就会“正常工作”了

    我看到你想要一个任意数量的列表,所以允许这样做。另外,您可能希望每个列表中有任意数量的选项。然而,不确定的是,这种控制的预期长期行为将是什么。也就是说,如果我有两个列表,我只能期望evr在框中看到两个单词,或者它会继续无限地附加最近选择的一个单词吗

    因此,当页面加载时,我会快速检查页面内容,查找并计算
    元素的实例。然后,在设置每个列表的属性来告诉列表它的索引是什么之前,我创建了一个包含这么多元素的数组

    单击
  • 时,将检索单词,检索单词所在列表的索引,然后将单词填充到我们前面创建的数组中。然后,我们要求重新绘制,在这种情况下,阵列的所有元素都被粘在一起,每个元素之间都有一个空格(“”),然后再被炸到屏幕上

    “严格使用”;
    函数byId(id){return document.getElementById(id)}
    函数newEl(tag){returndocument.createElement(tag)}
    addEventListener('load',onWindowLoaded,false);
    var字数组;
    函数onWindowLoaded(evt)
    {
    var orderedLists=document.querySelectorAll('ol');
    var listArray=[…OrderedList];
    wordArray=新数组(listArray.length);
    forEach(函数(卷曲列表,索引)
    {
    curList.dataset.listIndex=索引;
    curList.addEventListener('click',onListClicked,false);
    }
    );
    }
    函数onListClicked(evt)
    {
    var text=evt.target.textContent;
    var arrayIndex=parseInt(this.dataset.listIndex);
    wordArray[arrayIndex]=文本;
    renderText();
    }
    函数renderText()
    {
    var str=wordArray.join(“”);
    byId('output')。textContent=str;
    }
    
    
  • 你好
  • 问候
  • 问候
  • 人类
  • 农民
  • 地球人

  • 段落是指文本段落,还是用段落标记分隔?现在,
    alltext
    是一个文本区域,因此如果要在其中的内容上使用html标记,必须将其更改为另一个容器。
    document.getElementById(“alltext”).value+=String.fromCharCode(10)+(target.textContent | target.innerText)
    您可能希望有两个换行符,在这种情况下,您只需使用
    String.fromCharCode(10)
    两次。我可以将其更改为其他什么容器,怎么做呢?如果它不需要是文本区域,你可以在
    div
    中添加
    p
    标记,得到实际的段落。Adam H-我只想有一个包含实际段落的空白文档,我不需要(或想要)任何可见的html或任何东西。我会怎么做你的建议呢?我真的很喜欢第一个选项-但是是否可以添加第二个换行符,使它看起来更像第二个示例?非常感谢你!然而,我真的很喜欢你的方法;我认为OP想要一个运行的行动列表,应该很容易更新您的解决方案来处理这个问题。事实上,我喜欢这个列表似乎只处理每个列表中的一个响应。你会怎么做@Adam H在每一个换行符后插入两个换行符?@Ryan'sDad-这其实非常简单。只需更改
    wordArray.join(“”)
    进入
    wordArray.join(“\n\n”)