JavaScript NextElementSibling不起作用

时间:2015-09-07 18:05:20

标签: javascript html innerhtml html-input

我在元素中有几个Javascript输入,在它们下面有s。

我还有一个javascript函数,如果输入了一个字母,它会擦除​​输入的值,因此它只接受数字。



t=function(elem){
elem.onkeyup=function(e) {
  if(!/[\d\.]/.test(String.fromCharCode(e.which))) {
    elem.value='';
    x=elem.nextElementSibling;
    x.innerHTML='invalid string';
  }
};
};

<dt>
  <input type='number' onkeyup='t(this)'/>
 </dt>
<dd>
  text
  </dd>
<dt>
  <input type='number' onkeyup='t(this)'/>
  </dt>
<dd>
  text
  </dd>
<!--comment-->

As you can see, if you type a letter into either input, it clears that input. 
&#13;
&#13;
&#13;

如您所见,如果您输入一个字母到eithr输入,它会清除该输入。我想更改以下

的innerHTML
<dd></dd> 

元素到&#39;无效字符&#39;,您可以看到我尝试在javascript第5行和第6行执行此操作。为什么这不起作用?有任何想法吗?知道修复吗?

仅限常规/纯javascript答案。

1 个答案:

答案 0 :(得分:2)

您想要访问:elem.parentNode.nextElementSibling,因为您正在寻找<dt>(父元素)的兄弟,而不是没有兄弟姐妹的<input>

t=function(elem){
elem.onkeyup=function(e) {
  if(!/[\d\.]/.test(String.fromCharCode(e.which))) {
    elem.value='';
    x=elem.parentNode.nextElementSibling;
    x.innerHTML='invalid string';
  }
};
};
<dt>
  <input type='number' onkeyup='t(this)'/>
 </dt>
<dd>
  text
  </dd>
<dt>
  <input type='number' onkeyup='t(this)'/>
  </dt>
<dd>
  text
  </dd>