好的 - 我有一个全名字段(姓氏,名字)。返回的数据不是姓氏和名字,而是全名。然后将它打印到最后。我想只选择姓氏(逗号之前的所有内容),并将其设置为大写。
我可能在我的例子中混合了jQuery和javascript,我不是正面的 - 仍然是一个新手。但是,我在示例中所做的是:
function splitLastName(){
var splitNameArray = $('[data-dojo-attach-point|="physcianNameNode"]').split(",");
var lastName = splitNameArray[0];
var firstName = splitNameArray[1];
lastName.wrap('<span class="isUppercase" />');
}
基本上,我正在设置该字段的变量 - 我已经测试过它准确地抓住了我希望它抓取的元素。我正在将字符串转换为数组,由逗号字段分割。然后将数组的两个部分设置为自己的变量。最后,尝试将lastName字符串包装在添加'isUppercase'类的span中。我知道我做错了什么,这是什么?
答案 0 :(得分:5)
function splitLastName(){
$('[data-dojo-attach-point|="physcianNameNode"]').html(function(i, v) {
var names = v.split(',');
return '<span class="isUppercase">' +names[0] + '</span>,' + names[1];
});
}
以上是为元素设置新innerHTML
的快速解决方案。如果你想使用正确的DOM操作,它就像:
function splitLastName() {
$('[data-dojo-attach-point|="physcianNameNode"]').each(function() {
var names = $(this).text().split(',');
$(this).empty().append($('<span>', {
'class': 'isUppercase',
text: names[0]
}), ',' + names[1]);
});
}
请注意,我正在使用.each()
,因此无论$('[data-dojo-attach-point|="physcianNameNode"]')
匹配多个元素还是仅匹配一个元素,上述代码都将有效。
答案 1 :(得分:3)
问题是您正在尝试拆分JQuery对象。
我已更新您的示例:See here
function splitLastName(){
var element = $('[data-dojo-attach-point|="physcianNameNode"]');//find the element
var html = element.html();//get the contents of the DIV element
var splitNameArray = html.split(",");//Split the value with comma
var lastName = splitNameArray[0];//store the last name
var firstName = splitNameArray[1];//store the first name
var newHtml = '<span class="isUppercase">' + lastName + '</span>, ' + firstName;//create the new html using the parsed values
element.html(newHtml);//assign the new html to the original DIV element (overwriting the old)
}
答案 2 :(得分:1)
此行出现问题:
var splitNameArray = $('[data-dojo-attach-point|="physcianNameNode"]').split(",");
符号:
$('< some name >')
是一个选择元素的jQuery选择器。如果您在浏览器中键入此内容(在浏览器中替换&lt;某些名称&gt;和您的选择器),您将看到它返回的是一个对象而不是一个字符串。所以你的代码试图拆分一个对象。我不知道字符串的位置(div,span,输入框等),但你需要拉出字符串来进行拆分。如果您的字符串是div或span中的文本,请使用:
var splitNameArray = ($('[data-dojo-attach-point|="physcianNameNode"]').text()).split(",");
因为这将获取该选择器中包含的字符串,然后对其执行拆分。同样,如果它在输入中,您将需要使用适当的处理程序来获取值:
var splitNameArray = ($('[data-dojo-attach-point|="physcianNameNode"]').val()).split(",");
这将从输入中提取值,然后执行拆分。如果您的字符串是html,那么您也可以使用以下表示法获取它:
var splitNameArray = ($('[data-dojo-attach-point|="physcianNameNode"]').html()).split(",");
这将拉出html并执行相应的拆分操作。
希望这有帮助。