0
var lastname = jQuery('[name="dc_contributor_author_first_'+i+'"]');
if (lastname==null)
    exit;
var orderbox = "<td nowrap='nowrap'><input type='text' size=1 id='author_order_"+i+"' value="+i+" onchange=updateBoxes(this.value,"+i+")></td>";
jQuery(orderbox).insertAfter(lastname.parent());

結果として

<input type="text" )="" 1="" onchange="updateBoxes(this.value," value="1" id="author_order_1" size="1">

しかし、"onchange=updateBoxes(this.value,"+i+")"関数として updateBoxes からスペースを削除すると、すべて正常に動作し、以下の結果になります。なんで?

<input type="text" onchange="updateBoxes(this.value,1)" value="1" id="author_order_1" size="1">
4

2 に答える 2

1

変更してみてください:

var orderbox = "<td nowrap='nowrap'><input type='text' 
size=1 id='author_order_"+i+"' value="+i+" 
onchange=updateBoxes(this.value,"+i+")></td>";

に:

var orderbox = "<td nowrap='nowrap'><input type='text' 
size='1' id='author_order_"+i+"' value='"+i+"' 
onchange='updateBoxes(this.value,"+i+")'></td>";

適切な属性引用符は、jQuery パーサーにとってより使いやすい場合があります。

于 2013-10-28T19:00:10.910 に答える
0

どういうlastname = if(lastname==null) exit;意味かはわかりませんが、これらの要素を作成して挿入する方法は次のとおりです。

var td  = $('<td />', {
        'nowrap':'nowrap'
    }),
    inp = $('<input />', {
        type  : 'text',
        size  : '1',
        id    : 'author_order_'+i,
        value : i,
        on    : {
                change: function() {
                    updateBoxes(this.value, i);
                }
        }
    });

$('[name="dc_contributor_author_first_'+i+'"]').parent().after(td.append(input));
于 2013-10-28T18:48:07.093 に答える