当前位置: 首页 > news >正文

海南住房和城乡建设委员会门户网站网络营销专业可以干什么工作

海南住房和城乡建设委员会门户网站,网络营销专业可以干什么工作,做网站服务器可以挂到外地么,保定市住房和城乡建设局网站目录 1.初识 下载 使用 JQuery(核心)对象 2.选择器 基础选择器 层次选择器 后代选择器 子代选择器 兄弟选择器 相邻选择器 3.JQuery DOM操作 创建元素 插入元素 删除元素 遍历元素 属性操作 获取属性 设置属性 删除属性 样式操作 …

目录

1.初识

下载

使用

JQuery(核心)对象

2.选择器

基础选择器

层次选择器

后代选择器

子代选择器

兄弟选择器

相邻选择器

3.JQuery DOM操作

创建元素

插入元素

删除元素

遍历元素

属性操作

获取属性

设置属性

删除属性

样式操作

获取样式

设置属性

添加class

删除class

内容操作

html()

text()

val()

4.JQuery事件

加载事件 $(function(){...}

鼠标事件

键盘事件

this

5.AJAX操作

$.get()方法

$.post()方法

$.ajax()

同源策略(Same-Origin Policy) 与 跨域的解决


1.初识

JQuery是一个快速、简洁的JavaScript框架,优化HTML文档操作、事件处理、动画设计和Ajax交互。

下载

下载地址:https://jquery.com/

开发版:jquery-x.x.x.js(学习源码,文件较大)

发布版:jquery-x.x.x.min.js(适合项目部署,文件较小)

使用

<script src="./js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script>

JQuery(核心)对象

符号在JQuery中代表对JQuery对象的引用

$ == JQuery

2.选择器

基础选择器

选择器语法说明
id选择器$("#id名")选中某个id的元素(如果有多个同名id,则以第一个为准)
类选择器$(".类名")选中某一类的元素
元素选择器$(“标签名”)选中某一标签的元素
组合选择器$(“选择器1, 选择器2, … , 选择器n”)同时对几个选择器进行相同的操作
<head><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#idname").css("color","blue");$(".classname").css("color","green");$("div").css("color","red");})</script>
</head>
<body><p id="idname">id选择器</p><p class="classname">类选择器</p><div>标签选择器</div>
</body>
</html>

//作用是在文档加载完成后执行内部的代码

$(function () {
    ……
})

层次选择器

选择器语法说明
后代选择器$(“M N”)选择M元素内部后代N元素(所有N元素)
子代选择器$(“M>N”)选择M元素内部子代N元素(所有第1代N元素)
兄弟选择器$(“M~N”)选择M元素后面所有的同级N元素
相邻选择器$(“M+N”)选择M元素相邻的下一个元素(M、N是同级元素)

后代选择器

<head><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#first p").css("color","red");})</script>
</head>
<body><div id="first"><p>first的子元素</p><div id="second"><p>first子元素的子元素</p><p>first子元素的子元素</p></div><p>first的子元素</p></div>
</body>
</html>

子代选择器

<head><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#first>p").css("color","red");})</script>
</head>
<body><div id="first"><p>first的子元素</p><div id="second"><p>first子元素的子元素</p><p>first子元素的子元素</p></div><p>first的子元素</p></div>
</body>
</html>

与后代选择器对比,可以知道:子代选择器只选取子代元素,不包括其他后代元素。

兄弟选择器

<head><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#second~p").css("color","red");})</script>
</head>
<body><div id="first"><p>first的子元素</p><div id="second"><p>first子元素的子元素</p><p>first子元素的子元素</p></div><p>first的子元素</p><p>first的子元素</p></div>
</body>
</html>

兄弟选择器只选取后面的所有兄弟元素,不包括前面的所有兄弟元素。

相邻选择器

<head><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#second+p").css("color","red");})</script>
</head>
<body><div id="first"><p>first的子元素</p><div id="second"><p>first子元素的子元素</p><p>first子元素的子元素</p></div><p>first的子元素</p><p>first的子元素</p></div>
</body>
</html>

与兄弟选择器对比,可以知道:相邻选择器只选取后面相邻的第一个兄弟元素,不包括其他兄弟元素。

3.JQuery DOM操作

DOM(文档对象模型)(Document Object Model),由W3C定义的一个标准。

创建元素

使用字符串的形式来创建一个元素节点,然后再通过append()、before()等方法把这个字符串插入到现有的元素节点中。

<head><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {// 以字符串形式创建新元素var str = "<p>新创建元素</p>";// 在网页body部分添加新创建的元素$("body").append(str);})</script>
</head>
<body>
</body>
</html>

插入元素

方法    语法    说明
prepend() $(A).prepend(B)在元素A的内部开始处插入B元素(A、B为父子元素)
append()$(A).append(B)  在元素A的内部末尾处插入B元素(A、B为父子元素)
before()$(A).before(B) 在元素A的外部前面插入B元素(A、B为同级元素)
after() $(A).after(B)在元素A的外部后面插入B元素(A、B为同级元素)

代码如下,可自行体验不同方法之间的区别:

<head><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#btn1").click(function () {var li = "<li>用prepend()方法在无序列表<b>内部</b>添加的元素</li>";$("ul").prepend(li);})$("#btn2").click(function () {var li = "<li>用append()方法在无序列表<b>内部</b>添加的元素</li>";$("ul").append(li);})$("#btn3").click(function () {var li = "<p>用before()方法在无序列表<b>外部</b>添加的元素</p>";$("ul").before(li);})$("#btn4").click(function () {var li = "<p>用after()方法在无序列表<b>外部</b>添加的元素</p>";$("ul").after(li);})})</script>
</head>
<body><ul><li>无序列表中的元素A</li><li>无序列表中的元素B</li></ul><input id="btn1" type="button" value="prepend()方法" /><input id="btn2" type="button" value="append()方法" /><input id="btn3" type="button" value="before()方法" /><input id="btn4" type="button" value="after()方法" />
</body>
</html>

删除元素

方法语法说明
remove()$(A).remove()删除元素A内部及所有后代元素,不保留标签
empty()$(A).empty()清空元素A的内容及所有后代元素,保留标签
<head><title>删除元素</title><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#btn1").click(function () {$(".remove li:first-child").remove();})$("#btn2").click(function () {$(".empty li:first-child").empty();})})</script>
</head>
<body><ul class="remove"><li>测试remove()方法-<span>1</span></li><li>测试remove()方法-<span>2</span></li><li>测试remove()方法-<span>3</span></li></ul><input id="btn1" type="button" value="remove()方法" /><ul class="empty"><li>测试empty()方法-<span>1</span></li><li>测试empty()方法-<span>2</span></li><li>测试empty()方法-<span>3</span></li></ul><input id="btn2" type="button" value="empty()方法" />
</body>
</html>

remove()删除列表第一项;empty()清空列表第一项。

遍历元素

$(A).each(function(index, element){
    ……
})

each()方法接收一个匿名函数作为参数,该函数有两个参数:index,element。index是一个可选参数,它表示元素的索引号(即下标),索引从0开始的;element是可选参数,表示当前元素可以使用this代替

<head><title>遍历元素</title><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#btn").click(function () {$("li").each(function (index, element) {var txt = "第" + (index + 1) + "个元素";$(element).text(txt);});});})</script>
</head>
<body><ul><li></li><li></li><li></li></ul><input id="btn" type="button" value="添加内容" />
</body>
</html>

text() 在当前元素内添加文本

$("li").each(function (index, element) {
    var txt = "第" + (index + 1) + "个li元素";
    $(element).text(txt);
});

等价于:

$("li").each(function (index) {
    var txt = "第" + (index + 1) + "个li元素";
    $(this).text(txt);
});

属性操作

获取属性

方法语法说明
attr(“属性名”)$(A).attr(“属性名”)获取指定的属性值,如果没有该属性则返回undefined
prop(“属性名”)$(A).prop(“属性名”)一般用于获取具有true和false两个属性的属性值

具有true和false这两种取值的属性,如checked、selected或disabled等建议使用prop()来操作;而其他的属性都建议使用attr()来操作。

设置属性

方法    语法    说明
attr(“属性”, “取值”)  $(A).attr(“属性”, “取值”) 设置一个属性
attr({“属性1”: “取值1”, “属性2”:“取值2”, …, “属性n”:“取值n”})$().attr({“属性1”: “取值1”, “属性2”:“取值2”, …, “属性n”:“取值n”})设置多个属性

删除属性

方法语法说明
removeAttr(“属性名”)$(A).removeAttr(“属性名”)删除元素A的某个属性
<head><title>属性操作</title><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#get_src").click(function () {alert($("#pic").attr("src"));});$("#set_src").click(function () {$("#pic").attr("src", "./images/cat02.png");});$("#delete_src").click(function () {$("#pic").removeAttr("src");});})</script>
</head>
<body><input id="get_src" type="button" value="获取图片src属性值"/><input id="set_src" type="button" value="修改图片src属性值"/><input id="delete_src" type="button" value="删除图片src属性值"/><br/><img id="pic" src="./images/cat01.png" alt="这是一只猫的图片" height=243 width=336 />
</body>
</html>

样式操作

获取样式

方法语法说明
css(“属性名”)$(A).css(“属性名”)获取元素A一个CSS属性的取值

设置属性

方法    语法    说明
css(“属性”, “取值”)$(A).css(“属性”, “取值”)设置元素A的一个属性
css({“属性1”:“取值1”, “属性2”:“取值2”, …, “属性n”:“取值n”}) $(A).css({“属性1”:“取值1”, “属性2”:“取值2”, …, “属性n”:“取值n”}) 设置元素A的多个属性

添加class

方法语法说明
addClass(“类名”)$(A).addClass(“类名”)为元素A添加一个样式类

删除class

方法语法说明
removeClass(“类名”)$(A).removeClass(“类名”)删除元素A中的一个样式类
<head><title>样式操作</title><style type="text/css">div {background-color: pink;}.select {font-weight: bold;}</style><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#btn1").click(function () {// 获取当前背景颜色样式var result = $("div").css("background-color");alert("background-color样式为:" + result);});$("#btn2").click(function () {// 设置背景颜色为橙色$("div").css("background-color", "orange");});$("#btn3").click(function () {// 添加字体加粗样式类$("div").addClass("select");});$("#btn4").click(function () {// 删除字体加粗样式类$("div").removeClass("select");});})</script>
</head>
<body><div>内容</div><input id="btn1" type="button" value="获取背景颜色样式" /><input id="btn2" type="button" value="设置背景颜色样式" /><input id="btn3" type="button" value="添加字体样式类" /><input id="btn4" type="button" value="删除字体样式类" />
</body>
</html>

内容操作

html()
 

方法语法说明
html()$(A).html()获取html内容
html(“html内容”)$(A).html(“html内容”)设置html内容

 

text()

方法语法说明
text()$(A).text()获取文本内容
text(“文本内容”)$(A).text(“文本内容”)设置文本内容
<head><title>html()和text()</title><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {// 获取内容var strHtml = $("p").html();var strText = $("p").text();$("#txt1").val(strHtml);$("#txt2").val(strText);// 设置内容$("#btn1").click(function () {$("ul li:nth-child(1)").html("<h3>你好</h3>")})$("#btn2").click(function () {$("ul li:nth-child(2)").text("<h3>你好</h3>")})})</script>
</head>
<body><p><strong style="color:red">段落</strong></p>html()是:<input id="txt1" type="text" /><br/>text()是:<input id="txt2" type="text" /><ul><li></li><li></li></ul><input id="btn1" type="button" value="html()方法设置列表第一项" /><input id="btn2" type="button" value="text()方法设置列表第二项" />
</body>
</html>

val()

表单元素的值都通过value属性来定义的,使用val()来获取和设置表单元素的值。

方法语法说明
val()$(A).val()获取表单元素值
val(“值内容”)$(A).val(“值内容”)设置表单元素值
<head><title>val()</title><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#btn_get").click(function(){var str1 = $("#txt1").val();alert(str1);});$("#btn_set").click(function(){var str2 = "JavaScript";$("#txt2").val(str2);});})</script>
</head>
<body><input id="txt1" type="text" value="JQuery"/><br/><input id="txt2" type="text" /><br/>获取第1个文本框的值:<input id="btn_get" type="button" value="获取"/><br/>设置第2个文本框的值:<input id="btn_set" type="button" value="设置">
</body>
</html>

4.JQuery事件

加载事件 $(function(){...}

在jQuery中,ready表示文档加载完成后再执行的一个事件,类似JavaScript中的onload事件

//写法1:
$(document).ready(function(){
    ……
})
//写法2:
jQuery(document).ready(function(){
    ……
})
//写法3:
$(function(){
    …… 
})
//写法4:
jQuery(function(){
    ……
})

ready()方法的参数是一个匿名函数,写法3比较常见。

<head><title>加载事件</title><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>alert($(".content1").html());$(function () {alert($(".content2").html());})</script>
</head>
<body><div class="content1" style="background-color: pink;">内容1</div><div class="content2" style="background-color: orange;">内容2</div>
</body>
</html>

鼠标事件

常见的鼠标事件

事件    语法    说明
click    $(A).click(function(){…})鼠标单击事件
mouseover    $(A).mouseover(function(){…})鼠标移入事件
mouseout    $(A).mouseout(function(){…}) 鼠标移出事件
mousedown    $(A).mousedown(function(){…}) 鼠标按下事件
mouseup    $(A).mouseup(function(){…}) 鼠标松开事件
mousemove    $(A).mousemove(function(){…}) 鼠标移动事件

在事件方法中插入一个匿名函数function(){},匿名函数内部是执行操作的代码。

<head><title>鼠标事件</title><style>#btn{display: inline-block;width: 200;height: 24px;line-height: 24px;font-family:"微软雅黑";font-size:16px;text-align: center;border-radius: 3px;background-color: rgba(0, 183, 255, 0.781);color: White;cursor: pointer;}#btn:hover {background-color: dodgerblue;}</style><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#btn").click(function(){alert("成功触发鼠标点击事件")})$("#content").mouseover(function(){$(this).css("color", "red");})$("#content").mouseout(function (){$(this).css("color", "black");})})</script>
</head>
<body><div id="btn">鼠标点击事件</div><div id="content">鼠标移入移出事件</div>
</body>
</html>

// 链式调用
$("#content").mouseover(function(){
    $(this).css("color", "red");
}).mouseout(function () {
    $(this).css("color", "black");
})

等价于

$("#content").mouseover(function(){
    $(this).css("color", "red");
})
$("#content").mouseout(function () {
    $(this).css("color", "black");
})

键盘事件

事件语法说明
keydown$(A).keydown(function(){…})键盘按下事件
keyup$(A).keyup(function(){…})键盘松开事件
<head><title>键盘事件</title><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#txt").keyup(function(){var str = $(this).val();// 计算字符串长度$("#num").text(str.length);})})</script>
</head>
<body><input id="txt" type="text" style="display: inline-block;"/><div>字符串长度为:<span id="num">0</span></div>
</body>
</html>

this

this大多数都是用于事件操作中,指向触发当前事件的元素。

<head><title>加载事件</title><script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("div").click(function(){//$(this)等价于$("div")$(this).css("color", "red");})})</script>
</head>
<body><div>点击更改文本颜色</div>
</body>
</html>

在事件函数中,如果想要使用当前元素,尽量使用$(this),防止出现各种bug。

5.AJAX操作

Ajax,全称“Asynchronous JavaScript and XML”,即“异步的JavaScript和XML”。是通过JavaScript的XMLHttpRequest对象,以一种异步的方式,向服务器发送数据请求,并且通过该对象接收请求返回的数据,实现客户端与服务器端的数据操作。

Ajax能够刷新指定的页面区域,从而减少客户端和服务端之间数据量的传输。

$.get()方法

语法:

$.get(url, data, fn, type)

参数说明
url必选参数,表示被加载的页面地址
data可选参数,表示发送到服务器的数据
fn可选参数,表示请求成功后的回调函数
type可选参数,表示服务器返回的内容格式

参数type返回的内容格式包括:text、html、xml、json、script或default。

后端:

from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/')
def index():return render_template("$.get().html")@app.route('/get_text', methods=['GET'])
def get_text():# 获取数据name = request.values["name"]email = request.values["email"]# 返回字符串result = "用户姓名为" + name + ",用户邮箱为" + emailreturn result@app.route('/get_json', methods=['GET'])
def get_json():name = request.values["name"]email = request.values["email"]# 返回json格式数据result = {"name": name, "email": email}return resultif __name__ == '__main__':app.run(port=5001, debug=True)

前端:

<head><title>$.get()方法</title><script src="../static/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#send1").click(function () {$.get("/get_text",{ name: $("#name").val(), email: $("#email").val() },  // 发送到服务器的数据function (data) {console.log(data)$("#data").html(data); // 把返回的数据添加到页面上},type="text");})$("#send2").click(function () {$.get("/get_json",{ name: $("#name").val(), email: $("#email").val() },  // 发送到服务器的数据function (data) {console.log(data)// 解析服务器返回的json数据name=data['name']email=data['email']result="用户姓名为" + name + ",用户邮箱为" + email+"(JSON解析)"$("#data").html(result); // 把返回的数据添加到页面上},type="json");})})</script>
</head>
<body><form><p>姓名: <input id="name" type="text" /></p><p>邮箱: <input id="email" type="text" /></p><p><input id="send1" type="button" value="提交(返回格式为字符串)" /></p><p><input id="send2" type="button" value="提交(返回格式为JSON)" /></p></form><h3>服务器传输回来的数据:</h3><div id="data"></div>
</body>
</html>

$.post()方法

除了.get()方法,我们还可以使用.post()方法来通过Ajax去请求服务器的数据。

语法:

$.post(url, data, fn, type)

参数说明
url必选参数,表示被加载的页面地址
data可选参数,表示发送到服务器的数据
fn可选参数,表示请求成功后的回调函数
type可选参数,表示服务器返回的内容格式

后端代码如下:

from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/')
def index():return render_template("$.post().html")@app.route('/post_text', methods=['POST'])
def post_text():# 获取数据name = request.values["name"]email = request.values["email"]# 返回字符串result = "用户姓名为" + name + ",用户邮箱为" + emailreturn result@app.route('/post_json', methods=['POST'])
def post_json():name = request.values["name"]email = request.values["email"]# 返回json格式数据result = {"name": name, "email": email}return resultif __name__ == '__main__':app.run(port=5002, debug=True)

前端代码如下:

<head><title>$.post()方法</title><script src="../static/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#send1").click(function () {$.post("/post_text",{ name: $("#name").val(), email: $("#email").val() },  // 发送到服务器的数据function (data) {console.log(data)$("#data").html(data); // 把返回的数据添加到页面上},type="text");})$("#send2").click(function () {$.post("/post_json",{ name: $("#name").val(), email: $("#email").val() },  // 发送到服务器的数据function (data) {console.log(data)// 解析服务器返回的json数据name=data['name']email=data['email']result="用户姓名为" + name + ",用户邮箱为" + email+"(JSON解析)"$("#data").html(result); // 把返回的数据添加到页面上},type="json");})})</script>
</head>
<body><form><p>姓名: <input id="name" type="text" /></p><p>邮箱: <input id="email" type="text" /></p><p><input id="send1" type="button" value="提交(返回格式为字符串)" /></p><p><input id="send2" type="button" value="提交(返回格式为JSON)" /></p></form><h3>服务器传输回来的数据:</h3><div id="data"></div>
</body>
</html>

$.ajax()

.get()、.post()本质上都是使用.ajax()实现的,都是.ajax()方法的简化版,$.ajax()是最底层的方法。

语法:

$.ajax(options)

options是一个对象,内部有很多参数可设置,所有参数可选:

后端:

from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/')
def index():return render_template("$.ajax().html")@app.route('/ajax_text', methods=['GET', 'POST'])
def ajax_text():# 获取数据name = request.values["name"]email = request.values["email"]# 返回字符串result = "用户姓名为" + name + ",用户邮箱为" + emailreturn result@app.route('/ajax_json', methods=['GET', 'POST'])
def ajax_json():name = request.values["name"]email = request.values["email"]# 返回json格式数据result = {"name": name, "email": email}return resultif __name__ == '__main__':app.run(port=5003, debug=True)

前端:

<head><title>$.ajax()方法</title><script src="../static/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script><script>$(function () {$("#send1").click(function () {$.ajax({url: "/ajax_text",type: "get", // 请求的类型data: { name: $("#name").val(), email: $("#email").val() },  // 发送到服务器的数据dataType: "text", // 返回数据类型success: function (data) {console.log(data)$("#data").html(data); // 把返回的数据添加到页面上},error: function (XMLHttpRequest, textStatus, errorThrown) {console.log(XMLHttpRequest.status);// 状态码console.log(XMLHttpRequest.readyState);// 状态console.log(textStatus);// 错误信息   }})})$("#send2").click(function () {$.ajax({url: "/ajax_json",type: "post", // 请求的类型data: { name: $("#name").val(), email: $("#email").val() },  // 发送到服务器的数据dataType: "json", // 返回数据类型success: function (data) {console.log(data)// 解析服务器返回的json数据name = data['name']email = data['email']result = "用户姓名为" + name + ",用户邮箱为" + email + "(JSON解析)"$("#data").html(result); // 把返回的数据添加到页面上},error: function (XMLHttpRequest, textStatus, errorThrown) {console.log(XMLHttpRequest.status);// 状态码console.log(XMLHttpRequest.readyState);// 状态console.log(textStatus);// 错误信息   }})})})</script>
</head>
<body><form><p>姓名: <input id="name" type="text" /></p><p>邮箱: <input id="email" type="text" /></p><p><input id="send1" type="button" value="提交(返回格式为字符串)" /></p><p><input id="send2" type="button" value="提交(返回格式为JSON)" /></p></form><h3>服务器传输回来的数据:</h3><div id="data"></div>
</body>
</html>

同源策略(Same-Origin Policy) 与 跨域的解决

同源策略(Same-Origin Policy) 即协议、域名、端口号 必须完全相同,是浏览器的安全策略。Ajax遵守“同源策略”,Ajax请求无法从不同的域、子域或协议中获取数据。

如果想从不同的域、子域或协议中获取数据,就需要跨域。

CORS(Cross-Origin Resource Sharing),跨域资源共享。

下面简单介绍如何在Flask后端框架中设置CORS,需要下载flask_cors工具包。

from flask import Flask
from flask_cors import CORSapp = Flask(__name__)
CORS(app) #解决跨域@app.route("/")
def helloWorld():return "Hello, cross-origin-world!"
http://www.mmbaike.com/news/23576.html

相关文章:

  • 日本dns地址推荐新手做seo怎么做
  • 网站建设怎么做账郑州网站优化seo
  • wordpress 更换空间广东培训seo
  • 做网站java好还是php好seo高手培训
  • 邢台企业做网站找谁营销策略有哪些方面
  • 合优网是什么平台seo平台
  • 创新的盐城网站建设成都营销型网站制作
  • 潍坊网站制作厂家网站发帖推广平台
  • app开发和网站开发价格怎么做网站推广和宣传
  • 做微信公众号网站获客渠道找精准客户
  • 淘宝客网站推广位怎么做河北百度seo点击软件
  • 长春网站排名顾问式营销
  • 网页设计与网站建设第03章在线测试安徽网站设计
  • 哪个网站可以学做衣服东莞seo推广公司
  • 网站建设简历抖音推广渠道有哪些
  • 做一晚水泥工歌曲网站软文标题
  • 电脑科技网站模板关键词优化排名软件
  • 电商网站平台市场调研报告500字
  • 域名做违法网站专业seo网站优化推广排名教程
  • 建e网模型官网整站优化代理
  • 做微信公众号网站源码网络营销专家
  • 营销数据网站高清视频线转换线
  • 高端网站设计v芯hyhyk1推好自媒体引流推广
  • 网站建设工单系统护语十大场景营销案例
  • 琼海商城网站建设竞价推广哪家公司好
  • 如何制作ppt课件班级优化大师的功能
  • 海外服务器加速seo站长网怎么下载
  • 第三方app下载平台优化大师优化项目有
  • wordpress 页面 文章湖北seo整站优化
  • wordpress jet插件天门seo