替换字符串中的占位符值
Replacing placeholder values within a string
不确定为什么我的代码不工作,因为我从下面获取的代码在JSFiddle中工作
String.prototype.interpolate = (function() {
var re = /'[(.+?)']/g;
return function(o) {
return this.replace(re, function(_, k) {
return o[k];
});
}
}());
var _obj = {
hey: 'Hey',
what: 'world',
when: 'today'
}
document.write(
'[hey]-hey, I saved the [what] [when]!'.interpolate(_obj)
);
但我下面的代码似乎并没有做同样的事情。它仍然具有括号值[NAME][ADDRESS][PHONE],而不是替换的数据值:
$(document).ready(function () {
$('#goSearching').click(function () {
var isNumber = $.isNumeric($('#searchBox').val());
var theSearch = $('#searchBox').val();
var theURL = '';
if (isNumber) {
if (theSearch.length >= 10) {
//Search by NPI#
$('#titleOfSearchResult').html('P search results by NPI #:');
theURL = 'http://zzzzz.com:151/P/GetNPI/';
} else {
//Search by P #
$('#titleOfSearchResult').html('P search results by P #:');
theURL = 'http://zzzzzz.com:151/P/GetNo/';
}
} else {
//Search by P Name
$('#titleOfSearchResult').html('P search results by P Name:');
theURL = 'http://zzzzz.com:151/P/PName/';
}
$.ajax({
url : theURL + $('#searchBox').val() + '/',
type : 'GET',
dataType : 'xml',
timeout : 10000,
cache : false,
crossDomain : true,
success : function (xmlResults) {
console.log(xmlResults);
var _htmlObj = {};
$(xmlResults).find("P").each(function() {
_htmlObj = {
NAME : $(this).find("pName").text(),
ADDRESS : $(this).find("pSpecialty").text(),
PHONE : $(this).find("pUserid").text()
}
console.log($(this).find("pName").text());
console.log($(this).find("pSpecialty").text());
console.log($(this).find("pUserid").text());
$("#theResults").append(
'<p><strong>[NAME]</strong></p>' +
'<p>[ADDRESS]</p>' +
'<p>[PHONE]</p>' +
'<p> </p>'.interpolate(_htmlObj)
);
});
},
error : function(jqXHR, textStatus) {
console.log("error: " + textStatus);
}
});
});
String.prototype.interpolate = (function () {
var re = /'[(.+?)']/g;
return function (o) {
return this.replace(re, function (_, k) {
return o[k];
});
}
}());
});
在控制台中,它输出正确的返回值,但不会将这些值替换为占位符[NAME][ADDRESS][PHONE]。
任何解决这个问题的帮助都将是伟大的!谢谢
您只在最后一个字符串上调用interpolate
'<p><strong>[NAME]</strong></p>' +
'<p>[ADDRESS]</p>' +
'<p>[PHONE]</p>' +
'<p> </p>'.interpolate(_htmlObj)
成员访问的优先级高于添加,因此需要:
('<p><strong>[NAME]</strong></p>' +
'<p>[ADDRESS]</p>' +
'<p>[PHONE]</p>' +
'<p> </p>').interpolate(_htmlObj)
来自@TrueBlueAussie:jsfiddle.net/TrueBlueAussie/fFSYA/9
相关文章:
- 使用javascript的Asp.net内容占位符
- Internet Explorer缺少占位符支持,特别是密码字段
- 如何隐藏按钮单击事件上的占位符
- 需要URL模板占位符查找和替换功能的输入
- 初始化ng模型时,Angular ui选择占位符不起作用
- 如何在ie7或更高版本中设置密码字段的占位符
- 在不使用javascript的情况下,可以在表单字段中设置文本占位符(以提示最终用户插入特定格式)
- Select2-使用自定义模板时不显示占位符
- 替换字符串中的占位符值
- 为什么我应该使用HTML5(上下文:占位符)
- 在contentEditable元素中居中占位符插入符号
- 从气球弹出窗口中删除占位符
- 使用Node/Javascript提取字符串中的所有占位符
- 用来自JSON对象的占位符值替换字符串
- 如何在使用jQuery时为占位符设置onblur和onfocus字符串
- 占位符和标题中的Angularjs html替代字符串
- 修改格式模式以替换字符串中的占位符
- Stringformat占位符,分隔字符串
- 如何知道占位符字符串宽度在px的Jquery/Javascript
- 如果用户选择输入文本,并且输入值是空字符串,我可以保留占位符吗?