Javascript 用id属性值替换文本超链接并使其不可链接
我试图完成的是在单击文本后在网页上显示文本消息。新文本应替换我单击的文本。新文本应该是id属性的值。超链接意味着在第一次单击后消失(并且变得不可链接) 以下是我的一个尝试:Javascript 用id属性值替换文本超链接并使其不可链接,javascript,html,Javascript,Html,我试图完成的是在单击文本后在网页上显示文本消息。新文本应替换我单击的文本。新文本应该是id属性的值。超链接意味着在第一次单击后消失(并且变得不可链接) 以下是我的一个尝试: <a href="#" onclick id="Ana"> Apasa textul 1</a> <script type="text/javascript"> $("#id").on('click', function() { document.getElementById(
<a href="#" onclick id="Ana"> Apasa textul 1</a>
<script type="text/javascript">
$("#id").on('click', function() {
document.getElementById("Ana").innerHTML = "<span> Ana </span>";
});
</script>
$(“#id”)。在('click',function()上{
document.getElementById(“Ana”).innerHTML=“Ana”;
});
应用于替换
标记的标记为
单击Apasa textul 1
感谢您的帮助。在您的PHP上,您必须这样做(将此代码放在页面顶部): 该警报将通过PHP向您显示回显值。从那里你想怎么做就怎么做。。。类似于
$('p').html(结果)代码>
因为您正在进行ajax调用,所以不能依赖于您编写的内联代码,因为页面没有完全刷新。该代码在您第一次加载页面时执行,但因为在这种情况下,您没有通过POST(通常)在初始语句中传递参数,所以始终执行“else”
在我上面的代码中,如果不执行“exit;”调用ajax,您将在结果中收到整个页面。这就是为什么代码必须位于页面顶部,并且必须在后面调用退出。
/**第二行**/
2行
并不意味着在AJAX
请求后执行,它只在正常请求整个页面时执行
要获得想要的结果,您可以:
- 在
JavaScript
部分,当附加单击处理程序时,您需要防止a
元素的默认行为(重定向到href
属性所在的位置,如果#
属性在大多数情况下,页面会滚动到顶部)。此外,为了区分请求是AJAx
请求,您可以使用POST
变量,例如设置为1
,在服务器端检查它
- 在
PHP
部分中,检查$\u POST['isajax']
(应该告诉我们有一个AJAX
请求的变量)和$\u POST['name']
是否已设置且$\u POST['isajax']
等于1
,然后回送$\u POST['name']
,并停止脚本。此外,这些检查可能放在PHP
文件的顶部
JavaScript
部分可能如下所示:
$('#Ana').click(function(e) {
e.preventDefault(); /** prevents the link's default behavior **/
var name = $(this).attr('id');
$.ajax({
type: "POST",
url: "index.php",
data: {
isajax: 1, /** means we have an ajax request, it's not that **/
name: name
},
success: function(response) {
alert(response)
}
})
});
而PHP
部分(index.PHP
页面顶部)应该如下所示:
$('#Ana').click(function(e) {
e.preventDefault(); /** prevents the link's default behavior **/
var name = $(this).attr('id');
$.ajax({
type: "POST",
url: "index.php",
data: {
isajax: 1, /** means we have an ajax request, it's not that **/
name: name
},
success: function(response) {
alert(response)
}
})
});
if(isset($\u POST['isajax'],$\u POST['name'])&&$\u POST['isajax']==1){
echo$_POST['name'];
退出;/**不再执行其他行**/
}
有很多不同的方法可以做到这一点,但是如果您想使用内联函数调用,可以声明一个名为swapTag()
(或任何您喜欢的)的自定义函数,它将生成一个新的
标记,然后用原始标记id
值填充它,然后用新生成的元素替换原始dom元素
功能交换标签(el){
让newEl=document.createElement('span');
newEl.innerHTML=el.id;
el.parentNode.replaceChild(newEl,el);
}
你不需要这些东西
如果我了解全部内容,您希望在单击链接时:
- 执行AJAX调用
- 无论调用如何,都用其ID属性替换整个链接
是最快的方法,考虑到您的AJAX调用将在
performAjaxCall()
中,即使我执行“退出”,我仍然会接收整个页面:(尝试将数据类型:“text”添加到AJAX调用中..传递如下数据:{'name':name},如果(isset…位于索引的最顶端。php?set cache:false,这很奇怪,必须是cache。显示在哪里?看起来像什么?你想要工具提示?模态?另一页?文本替换?你想要新文本附加到旧文本?你的问题不清楚,我完全理解反对票。这里看起来你不需要ajax。在你的实际项目中是否有一些要求需要ajax?你真的需要ajax请求吗?在你的帖子中,你只想将id
属性的值附加到超链接文本的末尾……或者你想在超链接之后添加它?我们需要在这里看到更多的html吗?请更新你的帖子以显示你的确切体验反恐执行局源代码。Ana
或
(我只懂英语)。如果再次单击超链接,您希望的行为是什么?超链接是否意味着在第一次单击后消失(并变得不可点击)?当新的html看起来像
并且用户单击链接时,它是否会变成
?出于任何原因,标记是否需要保留为超链接?您也应该将此要求添加到您的问题中,这样您就不会继续收到错误的答案。
$('#Ana').click(function(e) {
e.preventDefault(); /** prevents the link's default behavior **/
var name = $(this).attr('id');
$.ajax({
type: "POST",
url: "index.php",
data: {
isajax: 1, /** means we have an ajax request, it's not that **/
name: name
},
success: function(response) {
alert(response)
}
})
});