jQuery设置对象中元素的值

时间:2015-01-14 12:46:07

标签: javascript jquery

如何使用来自对象$ this?

的JQuery设置元素的值

我有一些“A”类的div。

<div class="A">
  <span name='B'>some text</span>
  <div>
      <input name='value_1' value='15'/>
      <input name='value_2' value='9'/>
  </div>
</div>

<div class="A">
  <span name='B'>some other text</span>
  <div>
      <input name='value_1' value='7'/>
      <input name='value_2' value='12'/>
  </div>
</div>

...more divs like those

我正在设置名称B的跨度文本,其输入值更大(输入'value_1'和'value_2')。

但我正在尝试的似乎失败了,这就是js(使用jquery):

function setSpans(){
    var value1=0;
    var value2=0;
    var setting_value = 0;
    $('.A').each(function(){
        value1 = $(this).find("input[name='value_1']").val();
        value2 = $(this).find("input[name='value_2']").val();

        if(value1 > value2)
            setting_value = value1;
        else
            setting_value = value2;

        //here comes what I can't accomplish
        $(this).find("span[name='B']").text(setting_value);

    });
}

2 个答案:

答案 0 :(得分:1)

您需要做的就是在比较数字之前将字符串值转换为数字:

var value1 = Number($(this).find("input[name='value_1']").val());
var value2 = Number($(this).find("input[name='value_2']").val());

请记住,输入字段的值始终是字符串,当然字符串 "9"大于"15"

演示:http://jsfiddle.net/ck64v16t/

答案 1 :(得分:1)

我看到两个问题:

  • setSpans来电的时间。必须在使用过的元素已经在DOM中之后 - 使用document.ready或在页面中放置这些元素之后的脚本。

  • input s的值是字符串,因此您可以使用parseInt将值作为数字进行比较。

可行的例子:

Fiddle

HTML:

<div class="A">
    <span name='B'>some text</span>
    <div>
        <input name='value_1' value='15'>
        <input name='value_2' value='9'>
    </div>
</div>
<div class="A">
    <span name='B'>some other text</span>
    <div>
        <input name='value_1' value='7'>
        <input name='value_2' value='12'>
    </div>
</div>

JS:

$(document).ready(setSpans);

function setSpans()
{
    var value1 = 0;
    var value2 = 0;
    var setting_value = 0;
    $('.A').each(function()
    {
        value1 = parseInt($(this).find("input[name='value_1']").val());
        value2 = parseInt($(this).find("input[name='value_2']").val());
        if (value1 > value2)
        {
            setting_value = value1;
        }
        else
        {
            setting_value = value2;
        }
        $(this).find("span[name='B']").text(setting_value);
    });
}