Javascript 谁能用英语给我解释一下吗?

Javascript 谁能用英语给我解释一下吗?,javascript,Javascript,“whatYouTyped.parentNode;”有人能详细解释一下它到底在做什么吗 function checkphone(whatYouTyped) { var fieldset = whatYouTyped.parentNode; var txt = whatYouTyped.value; if ( /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ex

“whatYouTyped.parentNode;”有人能详细解释一下它到底在做什么吗

function checkphone(whatYouTyped) {
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
 if ( /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/.test(txt)) {
    fieldset.className = "welldone";
    compphone=true;
} else {
    fieldset.className = "";
    compphone=false;
}

}
whatYouTyped
必须是对元素的引用。此语句引用了
whatYouTyped
节点的父元素(容器)。我猜在此语句之前有一行类似于
whatYouTyped=document.getElementById(“someId”)

您已编辑了问题。请看,您正在将元素的引用传递给函数。
您的语句将返回对该元素父元素的引用,假设您有以下内容:

<div><input type="text" onBlur="checkphone(this)"/></div>


然后
whatYouTyped.parentNode
将返回对
div
的引用,该div是
input

的父节点。函数似乎接受一个属于某种元素的参数。函数首先查找元素的父元素,并将其分配给变量fieldset

然后它获取原始元素的值(whatyoutyped),并根据正则表达式检查它。如果模式匹配,它将更改父元素的类并将“compphone”设置为true。但是语法看起来有点奇怪


没有任何上下文,很难说这是为了什么,但它似乎是在检查某种输入/文本元素与某种正则表达式的对比-某种验证。

如果不使用一些术语,很难用英语描述这一点

whatYouTyped
是一个变量,已设置为指向DOM树中的元素

whatYouTyped.parentNode
是此元素的父元素

要更详细地解释:

DOM树是网页的结构,由浏览器保存在内存中。HTML代码中的每个标记都由该树结构中的一个元素表示

Javascript能够直接访问此树的任何部分,通常是通过使用
getElementById()
函数来实现的(尽管还有很多其他途径可以访问元素)

使用
getElementById()
或类似方法,可能已将
whatyotyped
变量设置为指向DOM树中的给定元素

DOM树结构的一部分是能够在树中的元素之间导航
parentNode
是允许您执行此操作的方法之一;它返回树中当前元素上方的元素

在本例中,您可能有如下HTML代码:

<fieldset id='outerLayer'>
    <input type='text' id='whatYouTyped' value='This is what you typed' />
    <input type='text' id='somethingElse' value='This is something else' />
</fieldset>
var whatYouTyped = document.getElementById('whatYouTyped');
至此,您提供的代码是有意义的,因为
whatYouTyped
变量现在被设置为DOM树中的一个元素。请求
whatYouTyped.parentNode
将为您提供outerLayer元素

查看您提供的代码,如果输入通过验证,它看起来好像在更改包装输入字段的元素的类。这将允许它做一些事情,比如改变背景颜色,或者在字段旁边放一个勾号图标,或者如果用户输入一个有效的字符串

希望有帮助

[编辑]


根据对问题的修改,我对答案做了一些修改。不过基本答案还是一样的。

根据你在SO的其他问题,你有

<fieldset>
  <label for="Phone">Phone:</label>
  <input type="text" id="Phone" onkeyup="checkphone(this);" />
  <span class="hint">This Feld Must Be Numeric Values Only !</span>
</fieldset>
如果你这样叫它,它会提醒你好。
foo(“你好”)

就你而言,你有

function checkphone(whateverYouWantToCallThePhoneFieldObjectInTheFunction) {
  do something with whateverYouWantToCallThePhoneFieldObjectInTheFunction
}
并可以将其更改为更具可读性的内容:

function checkphone(inputField) {
  do something with inputField
}
并且仍然使用

<input onblur="checkphone(this)"

你能发布其余的javascript代码吗?你键入的内容的父节点。你能不能不在这些未关闭的问题中发表评论似乎你需要注意这里的复制。这是一个表格,我只需要能够向我的讲座解释什么”(whatyoutyped)在英语中表示whatyoutyped基本上就是用户在txt框中键入的内容?@martin——不完全是。从技术上讲,
whatyoutyped
是整个
字段及其所有属性等。用户键入的实际文本是
whatyoutyped.value
。感谢您向我解释:)
<input onblur="checkphone(this)"