无法在Javascript中连接String + Variable + String

时间:2012-01-09 17:02:45

标签: javascript string concatenation

我正在尝试动态让我的javascript在DOM中查找元素ID。

我目前正在使用此

var string = "retail";
document.getElementById('markup_'+string+'_percentage').value=z.toFixed(2)+"%";

变量“string”的值类似于“零售”

我认为这会给出一个串联的“markup_retail_percentage”字符串。

然而,它实际上将此作为错误消息:

document.getElementById("markup_"+string+"_percentage") is null

我也尝试过使用“。”和“*”运营商。

我的一个html元素

<input type="text" id="markup_retail_percentage" size="5" name="markup_retail_percentage" value="" readonly />

解!!!!

//using a new variable name to be passed to function 
function percentage(elementid)
{

    elementid = "markup_" + elementid;
    elementid = elementid + "_percentage";

document.getElementById(elementid).value = "a value";


}

4 个答案:

答案 0 :(得分:5)

我看到两个^ w三个四个可能性:

  1. string不包含您的想法
  2. 你应该在percentage之前有一个下划线。
  3. 指定的元素确实不存在! (感谢@jAndy)
  4. 确实如此,但DOM尚未准备就绪(感谢@Yoshi)

答案 1 :(得分:2)

看起来您在百分比之前缺少下划线

document.getElementById('markup_'+ string +'percentage')

我想你想要

document.getElementById('markup_'+ string +'_percentage')

答案 2 :(得分:1)

如果在Document加载完成之前运行此代码,则您的标记将不会被完全解析,并且使用DOM方法无法访问具有该ID的Element

答案 3 :(得分:0)

解决方案:

function percentage(elementid)
{

    elementid = "markup_" + elementid;
    elementid = elementid + "_percentage";

document.getElementById(elementid).value = "a value";


}

我不知道它的工作原理:

- 会出现串联问题,不允许使用多个“+”运算符吗?

- 更改变量名称?

但它现在正在运作,所以感谢所有人!