此indexOf查询不起作用是有原因的吗?

时间:2019-11-05 11:03:59

标签: javascript html

我有一个REST API调用,该调用从SharePoint列表返回一组数据,我已将其部署到一系列文本区域。由此,我想进入这些文本区域之一,并测试是否在给定的文本中出现了某个关键字。如果这返回为True或出现在文本中,那么我想将复选框更改为选中状态。这些都是在MS Edge中完成的,并将在Edge或IE11中运行。目前,这一切都没有发生,但是我的调试器中没有出现任何错误,REST API结果正常显示。

<textarea id="impactedAreas" style="width: 500px; height: 60px"></textarea>
<input type="checkbox" id="custImpacted">
<input type="button" id="button" onclick="updateImpact" value="click me">
function updateImpact(){
var impactAreas = document.getElementById("impactedAreas");
var impact = String(impactAreas);

if (impact.indexOf("Customer") >= 0 ){
document.getElementById("custImpacted").checked = true;
}

在文本区域impactedAreas中以以下格式填充了以下一些或全部关键字:返回顾问,IT,设备,设施,客户,移动网络,家庭网络,天气

1 个答案:

答案 0 :(得分:2)

您缺少两件事:

  1. 在HTML中,您需要在方法名称()之后添加onclick="updateImpact()"
  2. 在JS中,您需要从.value返回的HTMLTextAreaElement中提取.getElementById()

function updateImpact(){
  var impactAreas = document.getElementById("impactedAreas");
  var impact = String(impactAreas.value); // <- here, `.value`

  if (impact.indexOf("Customer") >= 0 ){
    document.getElementById("custImpacted").checked = true;
  }
}
<textarea id="impactedAreas" style="width: 500px; height: 60px"></textarea>
<input type="checkbox" id="custImpacted">
<!-- You was missing `()` after `updateImpact` -->
<input type="button" id="button" onclick="updateImpact()" value="click me">