Javascript 如何将字符串与变量连接起来?

Javascript 如何将字符串与变量连接起来?,javascript,Javascript,所以我试图用一个字符串和一个传递的变量(一个数字)组成一个字符串。 我该怎么做 我有这样的想法: function AddBorder(id){ document.getElementById('horseThumb_'+id).className='hand positionLeft' } 那么,如何将“马拇指”和id合并到一个字符串中呢 我尝试了所有的选项,我也在谷歌上搜索,除了学习可以在字符串中插入一个变量,就像你做的那样。对于这些愚蠢的事情,我将给你一个小提示:只需使用浏览器u

所以我试图用一个字符串和一个传递的变量(一个数字)组成一个字符串。 我该怎么做

我有这样的想法:

function AddBorder(id){
    document.getElementById('horseThumb_'+id).className='hand positionLeft'
}
那么,如何将“马拇指”和id合并到一个字符串中呢


我尝试了所有的选项,我也在谷歌上搜索,除了学习可以在字符串中插入一个变量,就像你做的那样。对于这些愚蠢的事情,我将给你一个小提示:只需使用浏览器url框来尝试js语法。例如,写这个:
javascript:alert(“test”+5)
,你就有了答案。 代码中的问题可能是文档中不存在此元素。。。也许它在一个表格里或者什么的。您也可以通过在url中写入来测试这一点:
javascript:alert(document.horsembum_5)
以检查错误所在。

在javascript中,“+”运算符用于添加数字或连接字符串。 如果其中一个操作数是字符串“+”串联,如果它只是数字,则将它们相加

例如:

1+2+3 == 6
"1"+2+3 == "123"
var str = 'horseThumb_'+id;

str = str.replace(/^\s+|\s+$/g,"");

function AddBorder(id){

    document.getElementById(str).className='hand positionLeft'

}

你的代码是正确的。可能您的问题是没有将ID传递给
AddBorder
函数,或者具有该ID的元素不存在。或者,您可能正在通过浏览器的DOM访问相关元素之前运行函数

自ECMAScript 2015以来,您还可以使用:

document.getElementById(`horsesthumb\u${id}`)。className=“hand positionLeft”;
要识别第一种情况或确定第二种情况的原因,请将其添加为函数内的第一行:

警报('ID编号:'+ID);
警报('gEBI的返回值:'+document.getElementById('horsembum'+id));
这将在每次调用函数时打开弹出窗口,其值为
id
,返回值为
document.getElementById
。如果ID号弹出框中出现
未定义的
,则不会向函数传递参数。如果ID不存在,您将在第一个弹出窗口中获取(不正确的?)ID号,但在第二个弹出窗口中获取
null

第三种情况是,如果您的网页看起来像这样,在页面仍在加载时尝试运行
AddBorder

<head>
<title>My Web Page</title>
<script>
    function AddBorder(id) {
        ...
    }
    AddBorder(42);    // Won't work; the page hasn't completely loaded yet!
</script>
</head>

这可能是因为java脚本允许在字符串与数字连接时使用空格。尝试删除空格并创建一个字符串,然后将其传递到getElementById

例如:

1+2+3 == 6
"1"+2+3 == "123"
var str = 'horseThumb_'+id;

str = str.replace(/^\s+|\s+$/g,"");

function AddBorder(id){

    document.getElementById(str).className='hand positionLeft'

}

另一种方法是使用jquery简化操作

样本:

function add(product_id){

    // the code to add the product
    //updating the div, here I just change the text inside the div. 
    //You can do anything with jquery, like change style, border etc.
    $("#added_"+product_id).html('the product was added to list');

}
其中product_id是javascript变量,$(“#added_”+product_id)是一个与product_id连接的div id,即函数add的变量


致以最良好的祝愿

就像你做的那样。但是,如果您想明确,可以将
id
更改为
id.toString()
。是的,您做得很正确。如果它“不起作用”,那么其他的东西就错了,比如实际上没有一个具有该ID的元素。这段代码:
getElementById(“horsembum_{$ID}”)
不是JavaScript,而是PHP。这就是为什么它不适用于您。您的语法是正确的,但是请检查元素的大小写,记住Javascript是区分大小写的。某些浏览器允许您查找不区分大小写的元素,但并非所有浏览器都这样做that@Cory这是不必要的。id参数被连接到字符串,因此,它将被强制为字符串类型。另一种情况是,如果您不知道另一个运算符的类型,但在本例中它是字符串文字,因此不需要强制转换。为了好玩,结果是什么:
2+“3”-5
?(没有作弊)或者更好的结果是:
4+“5”-3
?太晚了,无法回答,但是。。。2+“3”将给出“23”(通过串联),而“23”-5将给出18(减法对字符串进行解析),您可以在控制台中对其进行测试…永远不要忘记运算符是从左到右求值的,因此:
1+2+'3'+4+5//3345
它对某些嵌入式JavaScript引擎不起作用-例如-将导致类似
MJS回调错误的错误:禁止隐式类型转换
。对于这种情况,需要使用显式类型转换