1

HTML:

<div id="div1" name="divname">Something</div>
<div id="div2" name="divname">Something else</div>

<div id="output"></div>

Jクエリ:

$('[name="divname"]').click( function (){ 

   var divnum = $(this).attr('id'); 
   var divout = 'out' + divnum;

   var outdiv1 = 'first div clicked';
   var outdiv2 = 'second div clicked';

   $('#output').html(divout);

});

div1 がクリックされた後の望ましい結果:

<div id="output">first div clicked</div>

実結果:

<div id="output">outdiv1</div>


助けてください。

4

2 に答える 2

1

このようにする必要があります:

$('[name="divname"]').click( function (){ 

  var divnum = $(this).attr('id'); 
  var out={div1:'first div clicked',div2:'second div clicked'}
  $('#output').html(out[divnum]);

});

だって、言われてみれば…

var divout = 'out' + divnum;

...divoutは文字列です。

しかし、含まれる文字列を名前とする変数にアクセスしたいとしますdivout。したがって、次のようにプロパティにアクセスできるため、最も簡単な方法はオブジェクトを作成することです。

  1. obj.プロパティ
  2. obj['プロパティ']

そう

  • 物件名が分かっている場合

    obj.propertyまたobj['property']

  • その名前がわからないが、myvarそれを含む変数がある場合:

    obj[myvar]( myvar = 'property')

編集:とにかく、その場合、私はそれを使用します:

$('[name="divname"]').click( function (){ 

  var divnum = $(this).attr('id'); 
  $('#output').html((divnum=='div1'?'first':'second')+' div clicked');

});

divnumであるかどうかをチェック'div1'し、そうである場合、結果は'first div clicked'です。そうでない場合は、'second div clicked'.

この方法では、オブジェクトは必要なく、条件のみが必要です。

于 2012-08-05T22:33:38.547 に答える
0

そのような適切な名前付け変数はどこにもありません。変数の名前がよく似ている場合 ( var1var2var3、...)、オブジェクトまたは配列を使用してそれらを格納する必要があります。

この場合、オブジェクトを使用して名前と値の間のマッピングを作成してみてください。

var outdivs = {
  'div1': 'first div clicked',
  'div2': 'second div clicked'
};

$('[name="divname"]').click(function() {
   var divnum = $(this).attr('id');

   $('#output').text(outdivs[divnum]);
});
于 2012-08-05T22:33:28.667 に答える