2

所以我得到了这个小代码,但我无法让它工作,我根本不明白为什么。我从我编写的另一个代码中复制了代码,只删除并重命名了所有我不需要的东西。我想在警告框中给出变量的值。

JS:

<script>
     function ready2() {
         var rdy = $("#rdy").value;
         alert(rdy); 
     }
</script>

的HTML:

<body>
   <form id="form2" onsubmit="return false;">
      <div>Ready:</div>
      <input type="text" id="rdy"></input>
      <button id="btn" onclick="ready2()">Ready</button>
   </form>
</body>

如果我用 $("#rdy").value;“hello world”之类的东西代替,它就可以了。所以问题一定是变量或者更好的:输入框。警报框总是显示“未定义”,我不知道为什么。

有什么帮助吗?

4

2 回答 2

4

你需要这个 -

var rdy = $("#rdy").val();

或者

var rdy = $("#rdy")[0].value;

value只能在 DOM 元素上使用,因为您在 jquery 对象上使用它而变得未定义,即 -$("#rdy")

于 2013-06-24T11:13:25.900 回答
0

当你这样做时:

$("#rdy")

您实际上正在生成一个包含所有节点的 jQuery Object 数组:

[domNode1, domNode2,... domNodeN] 
//note this array is a jQuery object, not an Array

由于它是一个 ID,它应该只找到一个:

[domNodeWithIdrdy]

jquery 数组中的 DOM 节点与您执行的操作相同,getElementById这意味着您可以直接访问这些值:

var jArray = $("#rdy");
console.log(jArray[0].value);

jQuery 还提供了一些执行此操作的函数:

$("#rdy").value();

但请记住,该val()函数将仅返回 jquery 数组中第一个元素的值,并忽略数组中多个元素的存在。

做也.val()比做更安全jArray[0].value。这是因为如果数组为空,它将尝试value读取undefined. IE:

jArray = $("#somethingThatDoesntExist");
assert( jArray.length === 0 );
assert( jArray[0] === undefined );
于 2013-06-24T11:18:57.060 回答