所以,我有一个字符串。该字符串包含html。我正在检查字符串中的'name',如果它没有我在那里使用偷偷摸摸的那个,如果它确实我需要改变它是什么。
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[].
}
我也有jquery,如果这比直接的javascript更有意义。
答案 0 :(得分: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();
答案 1 :(得分:0)
为什么不使用jQuery的内置功能。
演示 here
// 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 );
答案 2 :(得分: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[]';
答案 3 :(得分:0)
既然您正在使用jQuery,为什么不只是解析字符串并将标记视为HTML?
var html = $.parseXML(string);
$.each(html.find('*'),function()
{
if ($(this).attr('name'))
{
$(this).attr('name', 'addRow[]');
}
else
{
$(this).attr('name','removeRow[]');
}
});
从那里拿东西?
答案 4 :(得分: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