首页 文章

JavaScript html Textarea获取无法读取属性'1'的null

提问于
浏览
0

看到一个youtube视频,Chrome有Dev-tools并为了好玩而运行它,但它检测到RegEx.exec匹配的问题,但不确定原因 .

Despite the error the function works great in IE and Chrome just as expected ,但在创建更多代码/页面之前我不想超越自己,直到纠正这个空错误 .

这是我第一次使用javascript创建我自己的自动化webtool在我的计算机上运行,在那里我粘贴多行文本以通过Regexp.exec提取数据匹配,然后为我的呼叫中心作业执行连接 .

from Chrome DevTool

Uncaught TypeError: Cannot read property '1' of null           ConcatenateNodeAddr.html:27 

Join_NE_TID @ ConcatenateNodeAddr.html.html:27

onpaste @ ConcatenateNodeAddr.html.html:8

line 27 = var NetworkElementTID = (NodeAddrMatch[1]+NodeAddrMatch[2]+NodeAddrMatch[3]);

现在很困惑为什么我的代码“有效”,因为我得到了正确的输出 . 我在stackoverflow中发现了类似的问题,但看起来这些例子RegEx没有匹配,我必须遗漏一些东西 .

要使用我的webtool,只需将“W WLBYTYPSH67 WMMM800D 0311.05B 113”复制到文本区域

尽管有错误,我使用了regex101和RegEx组匹配良好 .

Match1 = WLBYTYPSH67 Match2 = 0311 Match3 = 05B

function ClearForm() {
  document.getElementById("TL1Form").reset();
}

function Join_NE_TID() {

  //  ## Extract NODE and Address to create TID //
  var InputName_NodeAddr = document.getElementsByName('NodeAddr')[0].value;
  var NodeAddrRegexp = /[\s\S]*\s([A-Z]{6}[A-Z0-9]{5})[\s\S]*\s([A-Z0-9]{4,6})(?:\.)([A-Z0-9]{3,5})\s[\s\S]*/;
  var NodeAddrMatch = NodeAddrRegexp.exec(InputName_NodeAddr);
  var NetworkElementTID = (NodeAddrMatch[1] + NodeAddrMatch[2] + NodeAddrMatch[3]);
  alert(NodeAddrMatch[1]); // alert shows the match //
  // ## Output Section  Node and Address ##  //
  var InputName_NodeAddrTID = document.getElementsByName('NodeAddrTID')[0];
  InputName_NodeAddrTID.value = (NetworkElementTID);

}
<form id="TL1Form">

  <!–– // ##  Define User Input Section ## // ––>
  
<b> Copy/Paste data between into text area
( W WLBYTYPSH67 WMMM800D 0311.05B 113 )</b>
<textarea name="NodeAddr" rows="3" cols="27" placeholder="W WLBYTYPSH67 WMMM800D 0311.05B 113" oninput="Join_NE_TID();" onpaste="Join_NE_TID();" /></textarea>
<input type="button" onclick="ClearForm()" value="Reset form">

<!–– // ### Define Output Fields for Concatenation ### //––> <b>TID:</b> <input type="text" name="NodeAddrTID" size="25" placeholder="WLBYTYPSHAT031105B" />
The output is correct WLBYTYPSH67031105B </form>

1 回答

  • 0

    我一直想知道“document.getElementsByName”是问题,并改为“document.getElementID”但没有变化 . 从我在w3schools上发现的,现在看起来像ID方法是首选 .

    看起来脚本在粘贴文本时运行了两次,第二次迭代导致chrome dev-tool检测到null,这可以解释为什么它有效并且我从未注意到问题 .

    我删除了“onpaste”并保留了“oninput”,这似乎可以阻止chrome Dev-Tool中的错误 . 我以为我需要一个用于粘贴而另一个用于键盘输入,我的不好 .

    纠正的代码是 .

    <textarea name="NodeAddr" rows="3" cols="27" placeholder="W  WLBYTYPSH67 WMMM800D  0311.05B  113" oninput="Join_NE_TID();" /></textarea>

相关问题