【问题标题】:Unable to concanate String+Variable+String in Javascript无法在Javascript中连接字符串+变量+字符串
【发布时间】:2012-01-09 17:02:44
【问题描述】:

我正在尝试让我的 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

我也尝试过使用“。”和“ * ”运算符。

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


}

【问题讨论】:

  • 你的意思是漏掉'percentage'之前的下划线吗?
  • 您能否发布元素的 id 为 markup_retail_percentage 的 html 代码?
  • 你真的需要stackoverflow吗?只需查看以下警报中的内容 alert('markup_'+ string +'percentage'); - 这意味着变量字符串不正确 alert(document.getElementById('markup'+ string +'_percentage')); - 如果警报 1 很好,如果警报 2 给出 null,那么您的文档中没有该 ID 的元素
  • @AdelBoutros ;提出的解决方案。看来是串联或变量名问题
  • 如果你写了elementid = 'markup_' + elementid + '_percentage',它也会起作用。

标签: javascript string concatenation


【解决方案1】:

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

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

【讨论】:

  • 3.没有具有该 ID 的元素。
  • 谢谢,但即使使用更正的字符串,它仍然会给出相同的错误
  • 所以先连接字符串,然后显示它(alert() 或console.log() 以找出其中的真正内容。然后检查该元素是否确实存在!
  • 这似乎排除了#2 和#3。请准确地说明您是如何为string 赋值的。也许还有一些额外的空间?
  • onchange="var string='length'; margin(string);"
【解决方案2】:

您似乎在百分比前面缺少一个下划线

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

我想你想要

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

【讨论】:

  • 谢谢,但即使使用更正的字符串,它仍然会给出相同的错误
  • document.getElementById("markup_" + string + "_percentage") 为空
  • @loosebruce 你有id markup_retail_percentage 的元素吗?还是class?或者不存在
  • 可能与使用单词 string 作为变量名有关。 String 虽然不受限制,但它是一个“预定义词”。尝试将变量名称更改为其他名称。
【解决方案3】:

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

【讨论】:

  • 我的脚本在 html 页面的末尾加载,在我看来问题是变量名或我是如何连接的。
  • 很公平。我不认为双重连接是错误的。你的原码应该没问题。
【解决方案4】:

解决方案:

function percentage(elementid)
{

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

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


}

我不知道它为什么起作用:

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

-更改变量名?

但它现在正在工作,所以谢谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 2013-11-10
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多