我在元素中有几个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;
如您所见,如果您输入一个字母到eithr输入,它会清除该输入。我想更改以下
的innerHTML<dd></dd>
元素到&#39;无效字符&#39;,您可以看到我尝试在javascript第5行和第6行执行此操作。为什么这不起作用?有任何想法吗?知道修复吗?
仅限常规/纯javascript答案。
答案 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>