无法在Javascript中连接字符串+变量+字符串

Unable to concanate String+Variable+String in Javascript

本文关键字:字符串 变量 连接 Javascript      更新时间:2023-09-26

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

我目前正在使用这个

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

其中变量"string"的值类似于"retail"

我想这会给出一个串联的字符串"markup_retail_percentage"。

然而,它实际上给出了一条错误消息:

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

我还尝试过使用"."answers"*"运算符。

我的一个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";

}

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

  1. string不包含您认为的内容
  2. percentage之前应该有一个下划线
  3. 指定的元素真的不存在!(谢谢@jAndy)
  4. 确实如此,但是DOM还没有准备好(谢谢@Yoshi)

看起来百分比前面缺少下划线

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

我想你想要

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

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

解决方案:

function percentage(elementid)
{
    elementid = "markup_" + elementid;
    elementid = elementid + "_percentage";
document.getElementById(elementid).value = "a value";

}

我不知道它为什么有效:

-可能是连接问题,不允许使用多个"+"运算符

-是否更改变量名称

但它现在正在发挥作用,所以感谢所有人!