第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

附加子項后 Regex.replace() 不起作用

附加子項后 Regex.replace() 不起作用

牛魔王的故事 2021-10-14 16:37:54
我正在嘗試使用 Regex 構(gòu)建一個基本的 mad lib 樣式代碼,但我無法創(chuàng)建新的輸入元素并使它們的行為與初始元素相同。我試過換掉 (doc.replace(regex[i]... for (doc.replace(inputArray[i]... - 這部分工作,但最后我被困在輸入值周圍的括號中。<!-- HTML<div id = "doc" contentEditable="true">{input1} {input2}</div><div id = "inputs"><input type = "text" id = "input1"> {input1}</div><br><button onclick="generate()">Generate</button><button onclick="addInput()">Add Input</button></div>-->//Global Variablesvar inputNumber = 1;var regex = [/{input1}/g];var inputArray = ["input1"];//Generatefunction generate(){for (var i = 0; i < inputArray.length; i++) {var doc = document.getElementById("doc").innerHTML;var outputArray = document.getElementById(inputArray[i]).value;document.getElementById("doc").innerHTML = (doc.replace(regex[i], outputArray))};};//Add Inputfunction addInput(){    inputNumber++;    var inputs = document.getElementById("inputs");    var newInput = document.createElement("div");    newInput.innerHTML = "<p><input type='text' id='input"+inputNumber+"'> {input"+inputNumber+"}</p>";    inputs.appendChild(newInput);    inputArray.push("input"+inputNumber);    regex.push("/{input"+inputNumber+"}/g")};我希望 {input2} 在調(diào)用函數(shù) generate() 時成為 ID 為 'input2' 的輸入值。直接說是行不通的。
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經(jīng)驗 獲得超6個贊

這是我的測試代碼片段。


//Global Variables

// RegEx save input

var regexInputs = /\{(input\d+)\}/g;


//Generate

function generate(){

  var doc = document.getElementById("doc");

  var inputs = doc.innerHTML.matchAll(regexInputs);

  var input = inputs.next();

  while(input.value){

    doc.innerHTML = doc.innerHTML.replace(

      input.value[0], document.getElementById(input.value[1]).value);


    input = inputs.next();

  };

}


function addInput(){

  var inputs = document.getElementById("inputs");

  var idxInput = inputs.children.length + 1;

  var newInput = document.createElement("div");

  newInput.innerHTML = "<p><input type='text' id='input"+ idxInput +"'> {input"+ idxInput +"}</p>";

  inputs.appendChild(newInput);

}

<div id = "doc" contentEditable="true">{input1} {input2}</div>

<div id = "inputs">

  <input type = "text" id = "input1"> {input1}

</div>

<br>

<button onclick="generate()">Generate</button>

<button onclick="addInput()">Add Input</button>

</div>



<script src="script.js" type="text/javascript"></script>

注意: regexInputs 是匹配所有輸入和存儲 (input\d+) 的模式,因此使用 matchAll 我們遍歷所有匹配項。每個匹配都有兩個索引,0 有“{input#}”,1 有“input#”。有了這個字符串,我們只做替換。


查看完整回答
反對 回復(fù) 2021-10-14
  • 1 回答
  • 0 關(guān)注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號