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函数中的 是name属性的当前值,jQuery 会自动将其传递给回调函数。返回值是属性的值应更新为的值。


更新:如果您想将其全部转换回字符串,请使用:

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

既然您无论如何都在使用 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 回答
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 回答