Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将jquery动态添加到div中_Javascript_Jquery_Html_Dynamically Generated - Fatal编程技术网

Javascript 将jquery动态添加到div中

Javascript 将jquery动态添加到div中,javascript,jquery,html,dynamically-generated,Javascript,Jquery,Html,Dynamically Generated,抱歉,我知道有很多问题都是这样的,它们帮了我很多,但我还是在最后关头摔倒了 我尝试使用以下方法将一些jQuery动态添加到div中: function displayPage(position,page){ // position arrives looking something like '#pageW20' - ignore quotes // page arrives looking something like 'pages/benefits.html' - ignor

抱歉,我知道有很多问题都是这样的,它们帮了我很多,但我还是在最后关头摔倒了

我尝试使用以下方法将一些jQuery动态添加到div中:

function displayPage(position,page){
    // position arrives looking something like '#pageW20' - ignore quotes
    // page arrives looking something like 'pages/benefits.html' - ignore quotes
    var pos = position.substring(1); // New variable without the '#' that appears in the first character of position
    var myDiv = document.getElementById(pos); // Find the div, typically equates to a div id similar to 'pageW20'
    var str = "<script type='text/javascript'>";
/*  Build the script which typically looks like this:-
<script type='text/javascript'> $( "#pageB15" ).load( "pages/benefits.html", function(){openLetter()}); </script> 
*/
    str += '$( ' + '"' + position + '"' +' ).load(' + page + ', function(){openLetter()})';
    str += '<';
    str += '/script>';
    alert(str); // Works to here, alert churns out expected output.
    //$('"' + position + '"').append(str); // Tried this, end up with syntax error
    myDiv.appendChild(str); // This gives Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.
}
功能显示页面(位置,页面){
//位置到达时看起来像“#pageW20”-忽略引号
//页面到达时看起来像“pages/benefits.html”-忽略引号
var pos=position.substring(1);//在position的第一个字符中不带“#”的新变量
var myDiv=document.getElementById(pos);//查找div,通常相当于类似于“pageW20”的div id
var str=“”;
/*构建通常如下所示的脚本:-
$(“#pageB15”).load(“pages/benefits.html”,function(){openLetter()});
*/
str+='$('+'''''+position+'''''+').load('+page+',function(){openLetter()});
str+='';
alert(str);//在这里工作,alert会产生预期的输出。
//$(““+position+”).append(str);//尝试此操作后,出现语法错误
myDiv.appendChild(str);//这给出了未捕获的TypeError:未能在“节点”上执行“appendChild”:参数1不是“节点”类型。
}
最后两行显示了我在尝试两种不同方法时遇到的错误。任何线索。 谢谢你的关心

更新:以下是我在alert()阶段在控制台中得到的信息,这正是我所希望的-

<script type='text/javascript'>$( "#pageW20" ).load("pages/work.html", function(){openLetter()})</script>
$(“#pageW20”).load(“pages/work.html”,function(){openLetter()})
更新:现已解决,谢谢@gaetano。我的代码现在看起来像:

function displayPage(position,page){
    var pos = position.substring(1); 
    var myDiv = document.getElementById(pos); 
    myDiv.innerHTML=""; // Remove existing div content
/*  Build the script which typically looks like this:-
<script type='text/javascript'> $( "#pageB15" ).load( "pages/benefits.html", function(){openLetter()}); </script> 
*/
    var str = '$( ' + '"' + position + '"' +' ).load(' + page + ', function(){openLetter()});';
    console.log(str); 
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.text = str;
    myDiv.appendChild(s);
}
功能显示页面(位置,页面){
var pos=位置子串(1);
var myDiv=document.getElementById(pos);
myDiv.innerHTML=“;//删除现有div内容
/*构建通常如下所示的脚本:-
$(“#pageB15”).load(“pages/benefits.html”,function(){openLetter()});
*/
var str='$('+'''''+position+'''''+').load('+page+',function(){openLetter()});';
console.log(str);
var s=document.createElement('script');
s、 类型='text/javascript';
s、 text=str;
myDiv.附属儿童;
}

您传递的
str
变量不是节点,而是字符串。首先尝试使用:

var line = document.createElement("p");
line.innerHTML = str;
myDiv.appendChild(line);

我无法理解您为什么要像注释中所描述的那样动态创建和附加脚本

您得到的错误是:

myDiv.appendChild(str)

但需要一个节点作为第一个参数

因此,如果需要继续此方向,则必须创建一个脚本节点元素,然后可以将其附加到html中,如我的示例所示:

功能显示页面(位置,页面){
var pos=position.substring(1);//在position的第一个字符中不带“#”的新变量
var myDiv=document.getElementById(pos);//查找div,通常相当于类似于“pageW20”的div id
var str='$('+''''+position+'''+').load('+page+'',function(){openLetter()});
var s=document.createElement('script');
s、 类型='text/javascript';
s、 text=str;
myDiv.附属儿童;
}
显示页面(“U XXX”,“页面”);
console.log(document.getElementById('XXX').outerHTML)


show code than I can help you为什么要尝试将jQuery动态添加到div中?您能否直接编写脚本并使用div作为选择器执行它?此外,HTML代码也很受欢迎,它为您遇到的问题提供了一个更好的上下文这是一种用Javascript做任何事情的非常奇怪的方式。我只能假设这是用于向动态创建的元素添加内容的X/Y解决方案,在这种情况下,您应该查看委托事件句柄。hanks两者都是,我正在从XML数据构建一个页面,其中一个元素有一个布尔标志,被解释为“if true”,将一些javascript放入div,否则放入原始HTML。我的大部分元素都是纯HTML,只有少数元素提供指向动态加载到页面中的子页面的链接。我要问的问题与将脚本添加到div而不是原始html有关。谢谢@Ish,至少我现在已经过了错误阶段。现在,我们可以找到javascript/jquery显示不正确的原因。我会发回。
script
元素也可以使用:
var scriptElement=document.createElement(“脚本”)链接:嗯,在我的字符串脚本构建中有一个小的语法错误,现在已经纠正了。javascript现在正确地出现在我的div中,但当我单击应该激活它的链接时,它不会被调用。仅供参考,我有很多这样的div,大多数都是用纯HTML构建的,每个都有显示它们的链接,这些都很有用。我展示的函数displayPage是为少数几个应该包含我上面展示的javascript的div设计的,而这些div没有。这是一个页面没有注册的问题吗?那里有新的javascript?谢谢@gaetanoM,还没有注册,但我想我会成功的。我的脚本现在应该出现在哪里。当我在那里时我会发回。破解它,谢谢@gaetano,我有几个错误,1)我试图加载它的div在我的函数调用之前不是空的,所以我需要先清除它,然后2)一些小的语法代码错误。你的代码运行得很好!非常感谢。@RogerW为了清空div,您可以使用:myDiv.innerHTML=“”;多谢各位