如何控制日志输入值?

时间:2018-03-23 11:28:10

标签: javascript jquery

我正在尝试从input.val()元素申请text span,但当我尝试在console中检查时,我无法获得它。< / p>

$("#sandbox-container span").on("click", function(e) {
      $("#sandbox-container span").removeClass("selected_year");
      $(this).attr("class", "selected_year");
      var dateSelected = $(".selected_year").text();
      var dateCat = $(".time_value").val(dateSelected);
      console.log(dateSelected);
      console.log(dateCat);
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="sandbox-container">
      <span class="selected_year">2014</span>
      <span>2018</span>
    </div>
<input label="null" style="display: none;" class="time_value" maxlength="99" name="usp-category" type="text" value="">

上面给了我:

2014
(index):208 r.fn.init [prevObject: r.fn.init(1)]

虽然我希望console.log(dateCat);能够给我2014

4 个答案:

答案 0 :(得分:3)

当你将一个值传递给函数时,你设置的元素的值没有获得它,jQuery方法遵循一个链接模式,所以它们实际上返回元素本身,所以如果你想设置一个值然后检索它:

var dateCat = $(".usp-input-category").val(dateSelected);

console.log(dateCat.val())

正如你所知,类选择器即$(".usp-input-category")返回一个数组。因此,在数组的构造函数中使用值运行.val将更改具有此类的所有元素的值。

当构造函数为空时,.val函数将返回元素的值,其中当使用值调用构造函数时,它将返回元素本身。

值得注意的是.val().text()之间的区别,因为后者可能是你应该看的功能。

  • .val获取/设置输入元素的值
  • .text获取/设置元素的innerText

答案 1 :(得分:0)

如果在没有参数的情况下调用.val()方法,则该函数返回<input>(或<select><textarea>)元素的当前值。如果该方法用于设置值,则将返回匹配元素的集合。

所以,你应该使用

console.log(dateCat.val());

var dateCat = $(".time_value").val(dateSelected).val();
console.log(dateCat);

显示新值。

答案 2 :(得分:0)

如果你给一个带有'usp-input-category'类的元素,你就会得到这个值。

$("#sandbox-container span").on("click", function(e) {
      $("#sandbox-container span").removeClass("selected_year");
      $(this).attr("class", "selected_year");
      var dateSelected = $(".selected_year").text();
      var dateCat = $(".usp-input-category").val(dateSelected);
      console.log(dateSelected);
      console.log(dateCat.val());
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="sandbox-container">
      <span class="selected_year">2014</span>
      <span>2018</span>
    </div>
    <input class="usp-input-category"/>

答案 3 :(得分:0)

您正在使用jQuery .val(value)设置元素的值。这不会返回您设置的值。您可以查看documentation

您可以使用$(".usp-input-category").val();检索该值。

逻辑在这里没有多大意义。但是,由于您坚持遵循这一逻辑,您可能会这样做:

var dateSelected = $(".selected_year").text();
$(".usp-input-category").val(dateSelected);
var dateCat = $(".usp-input-category").val();

这应该能给你正确的答案。

有关您获得的r.fn.init [prevObject: r.fn.init(1)]输出的说明,可以参考this SO question and answer.