如何仅使用 javascript 设置字体系列 - 无法访问 jquery、html 或 css,仅 js
How to set font family with javascript ONLY- no access to jquery, html, or css, only js
我正在使用 DirectSmile 为 EFI 数字店面制作印刷产品,DirectSmile 是一种插入 InDesign 和数字店面的可变数据程序。可变数据字段的复杂格式可以在 DirectSmile 中使用 javascript.
完成
我可以添加 javascript 进行格式化,但是没有 css 或 html 我可以与 js 结合使用。我只是将 js 片段添加到可变数据字段,保存并导出文件,然后上传到 Digital Storefront。
javascript > 可变数据字段 > Directsmile 文档 > 压缩产品 > Digital Storefront
现在我正在制作名片。它显示其 phone 数字,如下所示:
办公室 123.456.7890
单元格 123.456.7890
传真 123.456.7890
Office、Cell 和 Fax 一词应该使用一种字体(8pt Archer 粗体),而数字应该使用另一种字体(8pt Graphik Light)。这需要在 javascript 中定义,但我不知道如何定义。我对此很陌生,研究还没有成功——我发现的每一种方法似乎都需要访问 html/css,而我没有。
这是我过去用来格式化 phone 数字的 javascript,因此前面的标签 ("Office" "Cell" "Fax") 仅如果关联的 phone 号码被客户使用,则会出现,并格式化 phone 号码本身:
function numbers(){
out = ""
num = VAR.GetS("Office_Phone", "") if(num.length>0) out += "OFFICE" + phone(num) + "\n"; else out = "" + out;
num = VAR.GetS("Cell_Phone", "") if(num.length>0) out += "CELL" + phone(num) + "\n"; else out = "" + out;
num = VAR.GetS("Fax", "") if(num.length>0) out += "FAX" + phone(num) + "\n"; else out = "" + out;
return out;
}
function phone(number){
tmp = ""; div = ".";
if( number.length>0 ){
tmp = number.replace(/\D/g, "");
var len = tmp.length;
tmp = tmp.split("");
tmp.splice(len-7,0, div);
tmp.splice(len-3,0, div);
tmp = tmp.join("");
}
return tmp;
}
我怎样才能 add/change 使前面的标签 ("Office" "Cell" "Fax") 显示为 8pt Archer bold 而 phone 数字显示为 8pt图形灯?
非常感谢所有帮助。谢谢
注意:此回复仅适用于标准 HTML
它似乎与问题中最初要求的 DirectSmile 无关。对于希望通过 vanilla Javascript 在普通 HTML 元素上设置 fontFamily 的人来说,响应可能会有用。否则请忽略。
为 javascript 中的项目设置样式属性:
var el = document.getElementById('theelementid');
el.style.fontFamily = 'Graphik Light';
为此,您需要确定特定的 DOM 元素 ID,以将您的 javascript 定位到。
如果您只有块的 ID,则可能需要扩展概念以通过块内的标签名称识别项目。例如,以下内容会将字体系列样式应用于具有 id="blockid"
的外部块中的每个 span 元素:
var block = document.getElementById('blockid');
var els = block.getElementsByTagName('span');
for(var i in els){
if(els.hasOwnProperty(i)){
var el = els[i];
el.style.fontFamily = 'Graphik Light';
}
}
我正在使用 DirectSmile 为 EFI 数字店面制作印刷产品,DirectSmile 是一种插入 InDesign 和数字店面的可变数据程序。可变数据字段的复杂格式可以在 DirectSmile 中使用 javascript.
完成我可以添加 javascript 进行格式化,但是没有 css 或 html 我可以与 js 结合使用。我只是将 js 片段添加到可变数据字段,保存并导出文件,然后上传到 Digital Storefront。
javascript > 可变数据字段 > Directsmile 文档 > 压缩产品 > Digital Storefront
现在我正在制作名片。它显示其 phone 数字,如下所示:
办公室 123.456.7890
单元格 123.456.7890
传真 123.456.7890
Office、Cell 和 Fax 一词应该使用一种字体(8pt Archer 粗体),而数字应该使用另一种字体(8pt Graphik Light)。这需要在 javascript 中定义,但我不知道如何定义。我对此很陌生,研究还没有成功——我发现的每一种方法似乎都需要访问 html/css,而我没有。
这是我过去用来格式化 phone 数字的 javascript,因此前面的标签 ("Office" "Cell" "Fax") 仅如果关联的 phone 号码被客户使用,则会出现,并格式化 phone 号码本身:
function numbers(){
out = ""
num = VAR.GetS("Office_Phone", "") if(num.length>0) out += "OFFICE" + phone(num) + "\n"; else out = "" + out;
num = VAR.GetS("Cell_Phone", "") if(num.length>0) out += "CELL" + phone(num) + "\n"; else out = "" + out;
num = VAR.GetS("Fax", "") if(num.length>0) out += "FAX" + phone(num) + "\n"; else out = "" + out;
return out;
}
function phone(number){
tmp = ""; div = ".";
if( number.length>0 ){
tmp = number.replace(/\D/g, "");
var len = tmp.length;
tmp = tmp.split("");
tmp.splice(len-7,0, div);
tmp.splice(len-3,0, div);
tmp = tmp.join("");
}
return tmp;
}
我怎样才能 add/change 使前面的标签 ("Office" "Cell" "Fax") 显示为 8pt Archer bold 而 phone 数字显示为 8pt图形灯?
非常感谢所有帮助。谢谢
注意:此回复仅适用于标准 HTML
它似乎与问题中最初要求的 DirectSmile 无关。对于希望通过 vanilla Javascript 在普通 HTML 元素上设置 fontFamily 的人来说,响应可能会有用。否则请忽略。
为 javascript 中的项目设置样式属性:
var el = document.getElementById('theelementid');
el.style.fontFamily = 'Graphik Light';
为此,您需要确定特定的 DOM 元素 ID,以将您的 javascript 定位到。
如果您只有块的 ID,则可能需要扩展概念以通过块内的标签名称识别项目。例如,以下内容会将字体系列样式应用于具有 id="blockid"
的外部块中的每个 span 元素:
var block = document.getElementById('blockid');
var els = block.getElementsByTagName('span');
for(var i in els){
if(els.hasOwnProperty(i)){
var el = els[i];
el.style.fontFamily = 'Graphik Light';
}
}