我有这样的html结构:
<div id="things">
<div class="whatever">
<div class="frame">content</div>
<div class="frame">content</div>
<div class="frame">content</div>
</div>
</div>
我使用JQuery脚本获得JS,该脚本可以在该页面上点击按钮:
function intsaver(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "intsaver.php", true);
var tosf = $('<div></div>');
$("#things").find(".frame").each(function(){
tosf.append($(this).innerHTML);
alert(''+tosf);
});
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("data=" + tosf.innerHTML);
}
我可以在调试器中看到this
内容,它们正是我正在寻找的内容。但tosf
仍为undefined
,而在服务器端,我收到undefined
。
我尝试了一些方法,例如,我自己添加了this
。结果,div从页面上消失了,但tosf
仍然是undefined
。
我相信我犯了一些明显的错误。
答案 0 :(得分:3)
更改
updateTexture
要强>
tosf.append($(this).innerHTML);
或强>
tosf.append($(this).html());//$(this) a jQuery object
tosf.append(this.innerHTML);//this a dom object
是 $(this)
而不是 jQuery object
,其中没有属性 dom object
。请改用 innerHTML
。
答案 1 :(得分:2)
尝试
$aFilter = Array(
'pages' => 1,
'photo' => 1,
'link' => 1,
'event' => 1,
'friend' => 1,
'user_status' => 1,
'poll' => 1,
'quiz' => 1,
'market' => 1,
'apps' => 1
);
print_r($aFilter);
答案 2 :(得分:2)
function intsaver() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "intsaver.php", true);
var tosf = $('<div></div>');
$("#things").find(".frame").each(function () {
tosf.append(this.innerHTML); //innerHTML is a property dom element
alert('' + tosf);
});
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("data=" + tosf.html()); //tosf is a jQuery object os call .html()
}
应为$(this).innerHTML
而$(this).html();
应为tosf.innerHTML
原因为tosf.html()
,tosf
为 jQuery 样式,$(this)
为纯 javascript 。
答案 3 :(得分:2)
更多解释'为什么.innerHTML
'不起作用。
正如答案中所述,$(this).innerHTML
不起作用,因为jQuery没有该属性。但是,如果您调整代码,您也可以从.innerHTML
中受益。如果使用$(element)
包装元素,则会创建特定于jQuery的对象,如果要使用.innerHTML
,则需要从中获取元素:$(this)[0].innerHTML
。由于this
只是该jQuery数组中的元素,this.innerHTML
就足够了,而不是$(this)
。所以你的代码可以是:
function intsaver(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "intsaver.php", true);
var tosf = $('<div></div>');
$("#things").find(".frame").each(function(){
tosf.append(this.innerHTML);
alert(''+tosf);
});
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("data=" + tosf[0].innerHTML);}