根据元素宽度向javascript字符串添加空格
Add spaces to javascript string depending on element width
我有一个表单,可以将用户添加到2个文本框(姓氏和名字)中的选择列表中。
当我点击"+"按钮时,它会在下面的select元素中添加一个具有指定姓氏和名字的选项。现在,它添加了姓氏和名字之间只有一个空格的选项,但我希望名字与上面的"名字"文本框对齐。
下面是我的示例代码:http://jsfiddle.net/fx37j71s/12/
<table>
<tr>
<td>Last Name</td>
<td>First Name</td>
</tr>
<tr>
<td><input type="text" id="txtlastname" /></td>
<td><input type="text" id="txtfirstname" /></td>
<td><input type="button" value="+" onclick="addemployee();" /></td>
</tr>
<tr>
<td colspan="2"><select id="lbxname" size="5" style="width:500px"></select></td>
<td valign="top"><input type="button" value="-"onclick="removeemployee();" /></td>
</tr>
</table>
以及addemployee()函数:
function addemployee()
{
var lastname = document.getElementById('txtlastname');
var firstname = document.getElementById('txtfirstname');
var select = document.getElementById('lbxname');
var option = document.createElement('option');
var text = document.createTextNode(lastname.value + ' ' + firstname.value);
option.appendChild(text);
select.appendChild(option);
}
有没有一种方法可以在JS、jquery或CSS中实现这一点?我尝试添加固定数量的空格减去姓氏中的字符数量,但字符串的实际宽度取决于字符(即"PPPPP"比"lllll"宽,尽管它们都有5个字符)。我还找到了"clientWidth"属性,但似乎无法使其正常工作。
谢谢:)
节点可以设置innerHTML
而不是创建文本
类似于:
function addemployee()
{
var lastname = document.getElementById('txtlastname');
var firstname = document.getElementById('txtfirstname');
var select = document.getElementById('lbxname');
var option = document.createElement('option');
option.innerHTML = padStr(lastname.value) + firstname.value;
select.appendChild(option);
}
function padStr(str){
while(str.length < 500){
str += ' ';
}
return str
}
DEMO
根据charlietfl的回答和Evilzebra的评论,这对我来说很有效:
更新的小提琴:http://jsfiddle.net/vcfpd450/2/
function addemployee()
{
var lastname = document.getElementById('txtlastname');
var firstname = document.getElementById('txtfirstname');
var select = document.getElementById('lbxname');
var option = document.createElement('option');
option.innerHTML=padStr(lastname.value) + firstname.value;
select.appendChild(option);
}
function padStr(str){
var x = str.length;
while(x < 31){
str+=' ';
++x;
}
return str;
}
CSS:
#lbxname
{
font-family: monospace;
}
基本上,我在字符串中添加空格,直到达到所需的宽度(在本例中为31)。使用单空格字体系列可以确保宽度与字符数一致。
相关文章:
- 可变大小的JavaScript字符串如何成为基元类型
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何使用gump任务将html转换为javascript字符串
- 替换变量时,JavaScript字符串replace()不起作用
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 如何从django中的url解析javascript字符串
- 拆分javascript字符串以获得所需的值
- 使用Bootstrap'在Javascript字符串中的popover插件
- 如何替换javascript字符串中的前三个连字符
- 将JavaScript字符串转换为整数
- jquery/javascript字符串中的撇号
- 正在对java中的javascript字符串进行转义
- 如何在Javascript字符串中添加vaule
- Javascript:字符串中有效的基于数组的替换
- 具有负值的Javascript字符串.slice()
- javascript字符串替换$1(如果它是某个值)
- 将子函数的JavaScript字符串转换为实际函数
- JavaScript字符串中的换行符也保存为.txt
- 将Javascript字符串var传递给HTML href标记
- JavaScript 字符串字母和数字检查