まずはJSとjQueryを学習しています。私はフォームフィールドの内容を左右に同じフィールドにコピーするようにしています。 伝達関数は "null"を返すので、DOM内の要素が見つからないと思います。私は別の構文を試したが、私はそれを修正することはできません。ここでfrom属性でdocument.querySelectorがnullエラーを返します
は抜粋です:https://jsfiddle.net/wc8mzz3p/149/
<div id='main'>
<div id="rightSidePanel" class="ui form">
<div id="compareForm" class="fields grid-no-margin">
<div id="prjFormLeft" class="seven wide field">
<div class='ui stackable one column grid grid-no-margin tab active'>
<div class='column field'><label for='Customer'>Customer</label><input type='text' field='Customer' name='Customer'></input><div class='ui item'>
<button class='ui right floated icon button' for='Customer' side='Left' onclick='transfer(this)'>
<i class='right chevron icon'></i></button>
//--lots of other fields
</div></div></div></div>
<div id="prjFormRight" class="seven wide field">
<div class='ui stackable one column grid grid-no-margin tab active'>
<div class='column field'><label for='Customer'>Customer</label><input type='text' id='Customer' name='Customer'></input><div class='ui item'><button class='ui icon button' for='Customer' side='Right' onclick='transfer(this)'><i class='left chevron icon'></i></button></div></div>
//--lots of other fields
</div></div></div></div>
JS機能:
function transfer(element) {
var from = element.getAttribute('side');
var field = element.getAttribute('for');
if(from === 'Right') var dest = 'Left';
else var dest = 'Right';
var destElement = document.querySelector("#prjForm"+dest+" label[for='"+field+"']");
console.log(destElement);
}
これは、必要以上に複雑に思えます。 JSコードを汎用化する方法があるはずです。 PHPスパゲティの代わりに出力HTMLを投稿してください。 –
'from'と' side'の値は何ですか? – gurvinder372
@RoryMcCrossan出力HTMLはどういう意味ですか? from/sideの値が右または左 – blueDot