0

だから、私は文字列を持っています。文字列には html が含まれます。「名前」の文字列をチェックしています。ない場合は、そこにこっそり使用しています。ある場合は、それを変更する必要があります。

var myString = '<input id="accountUser_c967817c993e62b1de50e4f0401a03ae" type="hidden" value="c967817c993e62b1de50e4f0401a03ae" name="addRow[]"><div class="colors goldbluegreenorange"></div>';
if (myString.indexOf('name') == -1) {
    myString = myString.substr(0,myString.indexOf('>')) + ' name="addRow[]"' + myString.substr(myString.indexOf('>'));
} else {
    //get what's inside name's quotes and change it to removeRow[]. 
}

それがまっすぐなjavascriptよりも理にかなっていれば、私はjqueryも行っています。

4

5 に答える 5

2

jQueryを使用しているので、その文字列からjQuery要素を作成して、jQueryの美しいAPIを使用できるようにしてみませんか?生の文字列操作よりもエラーが発生しにくくなります。

サンプルコードは次のとおりです。

var $element = $('<input id="accountUser_c967817c993e62b1de50e4f0401a03ae" type="hidden" value="c967817c993e62b1de50e4f0401a03ae" name="addRow[]"><div class="colors goldbluegreenorange"></div>');

$element.filter('input').prop('name', function(i, v) {
    return v ? 'removeRow[]' : 'addRow[]';
});

注:v in that関数は属性の現在の値であり、jQueryはこのname属性をコールバック関数に自動的に渡します。戻り値は、属性の値を更新する必要がある値です。


更新:その後、すべてを文字列に変換し直す場合は、次を使用します。

var theHTMLstring = $element.wrapAll('<div>').parent().html();

これがフィドルです:http://jsfiddle.net/kBF3c/

于 2012-11-16T16:49:38.693 に答える
0

jQueryの組み込み機能を使用してみませんか。

こちらのデモ

// specify string representing input element
var str = '<input id="accountUser_c967817c993e62b1de50e4f0401a03ae" type="hidden" value="c967817c993e62b1de50e4f0401a03ae" name="addRow[]"><div class="colors goldbluegreenorange"></div>';

var els = $(str);
// create element
var el = $(els).filter("input");

if( $(el).prop("name") ) {
    $(el).prop( "name", "removeRow[]" );
} else {
    $(el).prop("name", "anynameyouwant");​​​​​​​​​​​​​​
}

上記の要素をDOMに追加する必要があると思います。

$("#parentId").append( els );
于 2012-11-16T16:49:24.337 に答える
0

文字列をjQueryオブジェクトに変換し、そこからパラメーターを読み取ってみてください。

var myString = '<input id="accountUser_c967817c993e62b1de50e4f0401a03ae" type="hidden" value="c967817c993e62b1de50e4f0401a03ae" name="addRow[]"><div class="colors goldbluegreenorange"></div>';
var $input = $(myString).filter('input');
$input.attr('name') = ($input.attr('name') == "") ? 'addRow[]' : 'removeRow[]';
于 2012-11-16T16:49:45.887 に答える
0

あなたはこれを試すことができます

var str = '<input id="accountUser_c967817c993e62b1de50e4f0401a03ae" type="hidden" value="c967817c993e62b1de50e4f0401a03ae" name="addRow[]"><div class="colors goldbluegreenorange"></div>';
$(str).prop('name', (!$(str).prop('name') ? "addRow[]" : "removeRow[]"));
str=$('<div/>').html(obj).html(); // str contains new value 

デモ

于 2012-11-16T17:11:37.760 に答える
0

とにかくjQueryを使用しているので、文字列を解析してタグをHTMLとして扱ってみませんか?

var html = $.parseXML(string);
$.each(html.find('*'),function()
{
    if ($(this).attr('name'))
    {
        $(this).attr('name', 'addRow[]');
    }
    else
    {
        $(this).attr('name','removeRow[]');
    }
});

そして、そこから物事を取りますか?

于 2012-11-16T16:52:31.923 に答える