未定义值javascript
我正在尝试使用值运行javascript函数但是得到的答案是val未定义 我想附加这个值 功能运行未定义值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
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");