如何仅在 javascript 函数内 运行 编码?
How to run code only inside javascript function?
我正在尝试使用 ajax 发送内部 html。发送前必须删除某些属性。当我单击按钮时,我删除了属性并发送...,一切正常,但我的属性也在 html 中被删除。
只能在函数内删除发送,不能在html中删除!
如何避免它。
代码:
<div id="container" class="container" >
<div id="parent1" class="parent">
<div id="child1" class="child" ondrop="drop(event);" ondragover="allowDrop(event);" >same content</div>
</div>
<div id="parent2" class="parent">
<div id="child2" class="child" ondrop="drop(event);" ondragover="allowDrop(event);" >same content</div>
</div>
<div id="parent3" class="parent">
<div id="child3" class="child" ondrop="drop(event);" ondragover="allowDrop(event);" >same content</div>
</div>
</div>
<button onclick="myFunction()">Click me</button>
function myFunction() {
var divsclass = Array.prototype.slice.call(document.getElementsByClassName("parent"));
var parenthtml = "";
divsclass.forEach(function(div){
Array.from(document.querySelectorAll(".parent [ondrop]")).forEach((elem) => elem.removeAttribute("ondrop"));
Array.from(document.querySelectorAll(".parent [ondragover]")).forEach((elem) => elem.removeAttribute("ondragover"));
var parenthtmlsend = div.innerHTML;
parenthtml += "&PARENTHTML"+ n++ +"=" + parenthtmlsend;
});
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
}
};
xmlhttp.open("GET", "same-page.php? "+ encodeURI(results) + parenthtml, true);
xmlhttp.send();
}
我尝试将代码复制到另一个 div 然后删除属性,但即使这样 html 代码中的属性也被删除了。
var containercopy = document.getElementById("container").innerHTML;
document.getElementById("container-copy").innerHTML = containercopy;
我的代码比较大,所以我重写了一个简单的例子,可能一路上我犯了一个错误...
我不确定这是个好方法,但您可以深入克隆数组中的元素,然后对其进行更改。
查看代码
function myFunction() {
var divsclass = Array.prototype.slice.call(document.getElementsByClassName("parent"));
var parenthtml = "";
divsclass.forEach(function(div){
// clone
var clonedDiv = div.cloneNode(true);;
Array.from(clonedDiv.querySelectorAll(".parent [ondrop]")).forEach((elem) => elem.removeAttribute("ondrop"));
Array.from(clonedDiv.querySelectorAll(".parent [ondragover]")).forEach((elem) => elem.removeAttribute("ondragover"));
var parenthtmlsend = clonedDiv.innerHTML;
parenthtml += "&PARENTHTML"+ n++ +"=" + parenthtmlsend;
});
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
}
};
xmlhttp.open("GET", "same-page.php? "+ encodeURI(results) + parenthtml, true);
xmlhttp.send();
}
您的代码中似乎 n
未定义,但我没有更改它
我正在尝试使用 ajax 发送内部 html。发送前必须删除某些属性。当我单击按钮时,我删除了属性并发送...,一切正常,但我的属性也在 html 中被删除。
只能在函数内删除发送,不能在html中删除! 如何避免它。
代码:
<div id="container" class="container" >
<div id="parent1" class="parent">
<div id="child1" class="child" ondrop="drop(event);" ondragover="allowDrop(event);" >same content</div>
</div>
<div id="parent2" class="parent">
<div id="child2" class="child" ondrop="drop(event);" ondragover="allowDrop(event);" >same content</div>
</div>
<div id="parent3" class="parent">
<div id="child3" class="child" ondrop="drop(event);" ondragover="allowDrop(event);" >same content</div>
</div>
</div>
<button onclick="myFunction()">Click me</button>
function myFunction() {
var divsclass = Array.prototype.slice.call(document.getElementsByClassName("parent"));
var parenthtml = "";
divsclass.forEach(function(div){
Array.from(document.querySelectorAll(".parent [ondrop]")).forEach((elem) => elem.removeAttribute("ondrop"));
Array.from(document.querySelectorAll(".parent [ondragover]")).forEach((elem) => elem.removeAttribute("ondragover"));
var parenthtmlsend = div.innerHTML;
parenthtml += "&PARENTHTML"+ n++ +"=" + parenthtmlsend;
});
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
}
};
xmlhttp.open("GET", "same-page.php? "+ encodeURI(results) + parenthtml, true);
xmlhttp.send();
}
我尝试将代码复制到另一个 div 然后删除属性,但即使这样 html 代码中的属性也被删除了。
var containercopy = document.getElementById("container").innerHTML;
document.getElementById("container-copy").innerHTML = containercopy;
我的代码比较大,所以我重写了一个简单的例子,可能一路上我犯了一个错误...
我不确定这是个好方法,但您可以深入克隆数组中的元素,然后对其进行更改。
查看代码
function myFunction() {
var divsclass = Array.prototype.slice.call(document.getElementsByClassName("parent"));
var parenthtml = "";
divsclass.forEach(function(div){
// clone
var clonedDiv = div.cloneNode(true);;
Array.from(clonedDiv.querySelectorAll(".parent [ondrop]")).forEach((elem) => elem.removeAttribute("ondrop"));
Array.from(clonedDiv.querySelectorAll(".parent [ondragover]")).forEach((elem) => elem.removeAttribute("ondragover"));
var parenthtmlsend = clonedDiv.innerHTML;
parenthtml += "&PARENTHTML"+ n++ +"=" + parenthtmlsend;
});
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
}
};
xmlhttp.open("GET", "same-page.php? "+ encodeURI(results) + parenthtml, true);
xmlhttp.send();
}
您的代码中似乎 n
未定义,但我没有更改它