未定义值javascript

未定义值javascript,javascript,undefined,Javascript,Undefined,我正在尝试使用值运行javascript函数​​但是得到的答案是val未定义 我想附加这个值 功能运行 myufunc("test msg"); 代码 function myufunc(val){ var script = document.createElement("script"); script.type = "text/javascript"; script.text = 'alert(val);'; document.body.appendC

我正在尝试使用值运行javascript函数​​但是得到的答案是val未定义

我想附加这个值

功能运行

myufunc("test msg");
代码

function myufunc(val){
    var script   = document.createElement("script");
    script.type  = "text/javascript";
    script.text  = 'alert(val);';
    document.body.appendChild(script);
}
首先,“int”在Javascript中是一个保留字-

第二,您使用“val”时,就好像它是一个字符串,而不是一个变量

init("test msg");

function init(val){

var script   = document.createElement("script");
script.type  = "text/javascript";
script.text  = 'alert('+val+');';
document.body.appendChild(script);

}

int在JavaScript中是一个保留字,所以绝对不要使用它。这很可能是代码无法正常工作的原因

问题 问题是您创建的脚本标记将包含
alert(val)
,但
val
尚未初始化;它确实存在于您的函数中-但是新创建的script元素不知道您指的是什么
val

您可能希望元素最终包含
alert(“test msg”)

函数f(val){
var script=document.createElement(“脚本”);
script.type=“text/javascript”;
script.text='alert('+val+');
document.body.appendChild(脚本);
}
f(“测试消息”);//将创建一个包含“警报”(“测试消息”)`

注意:由于我们手动使用双引号包装
val
的内容,请小心,以便传入的值本身不包含双引号
”;这将中断“生成的“code.

问题是
val
仅在
myufunc
范围内可用,并且当附加脚本时,它在全局范围内执行,而不是在函数范围内执行。因此,
val
未在全局范围内定义

解决方案是创建一个全局变量并将其值设置为
val
,然后在警报中使用全局变量。使用这种方式,不需要将变量连接到字符串中,因此您不会遇到变量包含引号和中断字符串的问题

function myufunc(val){
    myValue = val; // create global

    var script   = document.createElement("script");
    script.type  = "text/javascript";
    script.text  = 'alert(myValue);'; // use the global
    document.body.appendChild(script);
}
以下各项都将起作用:

myufunc('test');
myufunc('tes"t');
myufunc("tes't");

@BojanaCubranovic Dude,您需要将val连接到要插入文档的脚本字符串中。而不是
script.text='alert(val);'
但是
script.text='alert('+val+')
myufunc('test');
myufunc('tes"t');
myufunc("tes't");