Javascript 在html中添加属性时出错。我怎样才能修好它?
我正在尝试使用skype与Html和javascript进行聊天。 这里的问题是,我无法将属性href添加到我的id中 这是我的代码:Javascript 在html中添加属性时出错。我怎样才能修好它?,javascript,html,href,Javascript,Html,Href,我正在尝试使用skype与Html和javascript进行聊天。 这里的问题是,我无法将属性href添加到我的id中 这是我的代码: 函数el(元素ID、用户名、操作){ document.getElementById(elementId).setAttribute(“href”,“skype:+username+”?“+action”); } 函数buildLinkRefs(){ var username=document.getElementById(“用户名”).value; el(“
函数el(元素ID、用户名、操作){
document.getElementById(elementId).setAttribute(“href”,“skype:+username+”?“+action”);
}
函数buildLinkRefs(){
var username=document.getElementById(“用户名”).value;
el(“呼叫btn”,用户名,“呼叫”);
el(“添加到联系人btn”,用户名,“添加”);
el(“查看配置文件btn”,用户名,“用户信息”);
el(“语音电子邮件btn”,用户名,“语音邮件”);
el(“聊天btn”,用户名,“聊天”);
el(“发送文件btn”,用户名,“发送文件”);
}
document.getElementById(“用户名”).addEventListener(“更改”,函数(){
buildLinkRefs();
},假);
buildLinkRefs()代码>
呼叫
添加到联系人
查看用户配置文件
语音电子邮件
开始聊天
发送文件
您使用了错误的事件侦听器。文本输入应使用“键控”,而不是“更改”
因此,使用您的代码,它应该如下所示:
函数el(元素ID、用户名、操作){
document.getElementById(elementId).setAttribute(“href”,“skype:+username+”?“+action”);
}
函数buildLinkRefs(){
var username=document.getElementById(“用户名”).value;
el(“呼叫btn”,用户名,“呼叫”);
el(“添加到联系人btn”,用户名,“添加”);
el(“查看配置文件btn”,用户名,“用户信息”);
el(“语音电子邮件btn”,用户名,“语音邮件”);
el(“聊天btn”,用户名,“聊天”);
el(“发送文件btn”,用户名,“发送文件”);
}
document.getElementById(“用户名”).addEventListener(“键控”,buildLinkRefs);
buildLinkRefs()代码>
呼叫
添加到联系人
查看用户配置文件
语音电子邮件
开始聊天
Send File
问题是,在加载整个页面之前,您的函数已启动,因此它看不到元素username
,因为该元素不可用。因此有很多方法可以解决此问题。只需将代码放在html元素后面或下面,如下图所示:
<html>
<head>
<title>the title</title>
</head>
<body>
<input type="text" id="username" value="echo123"/><br>
<br>
<a id="call-btn">Call</a> <br>
<a id="add-to-contacts-btn">Add to contacts</a> <br>
<a id="view-profile-btn">View User Profile</a> <br>
<a id="voice-email-btn">Voice Email</a> <br>
<a id="chat-btn">Start Chat</a> <br>
<a id="sendfile-btn">Send File</a> <br>
<!-- ### PLACE HERE YOUR CODE AFTER YOUR HTML CONTENT -->
<script type="text/javascript" language="javascript">
function el(elementId, username, action) {
document.getElementById(elementId).setAttribute("href", "skype:" +
username + "?" + action);
}
function buildLinkRefs() {
var username = document.getElementById("username").value;
el("call-btn", username, "call");
el("add-to-contacts-btn", username, "add");
el("view-profile-btn", username, "userinfo");
el("voice-email-btn", username, "voicemail");
el("chat-btn", username, "chat");
el("sendfile-btn", username, "sendfile");
}
document.getElementById("username").addEventListener("change", function () {
buildLinkRefs();
}, false);
buildLinkRefs();
</script>
标题
呼叫
添加到联系人
查看用户配置文件
语音电子邮件
开始聊天
发送文件
函数el(元素ID、用户名、操作){
document.getElementById(elementId).setAttribute(“href”,“skype:”+
用户名+“?”+操作);
}
函数buildLinkRefs(){
var username=document.getElementById(“用户名”).value;
el(“呼叫btn”,用户名,“呼叫”);
el(“添加到联系人btn”,用户名,“添加”);
el(“查看配置文件btn”,用户名,“用户信息”);
el(“语音电子邮件btn”,用户名,“语音邮件”);
el(“聊天btn”,用户名,“聊天”);
el(“发送文件btn”,用户名,“发送文件”);
}
document.getElementById(“用户名”).addEventListener(“更改”,函数(){
buildLinkRefs();
},假);
buildLinkRefs();
您遇到了什么错误?您不需要在
标记上为href设置属性,只需调用document.getElementById(elementId).href=…
您的示例在加载时工作,而不是在键入用户名时,在您的事件中,侦听器将change
更改为input
或keyup
。很抱歉没有很好地说明问题。所以,我的问题是,我不能用我的脚本href,我也不明白为什么。根本没有修复@asdru谢谢你的回答,但是更改keyup并没有将href添加到my:(我只是注意到,如果我在这个响应上运行代码,我会得到我需要的。可能是我的计算机上的某个东西。
<html>
<head>
<title>the title</title>
</head>
<body>
<input type="text" id="username" value="echo123"/><br>
<br>
<a id="call-btn">Call</a> <br>
<a id="add-to-contacts-btn">Add to contacts</a> <br>
<a id="view-profile-btn">View User Profile</a> <br>
<a id="voice-email-btn">Voice Email</a> <br>
<a id="chat-btn">Start Chat</a> <br>
<a id="sendfile-btn">Send File</a> <br>
<!-- ### PLACE HERE YOUR CODE AFTER YOUR HTML CONTENT -->
<script type="text/javascript" language="javascript">
function el(elementId, username, action) {
document.getElementById(elementId).setAttribute("href", "skype:" +
username + "?" + action);
}
function buildLinkRefs() {
var username = document.getElementById("username").value;
el("call-btn", username, "call");
el("add-to-contacts-btn", username, "add");
el("view-profile-btn", username, "userinfo");
el("voice-email-btn", username, "voicemail");
el("chat-btn", username, "chat");
el("sendfile-btn", username, "sendfile");
}
document.getElementById("username").addEventListener("change", function () {
buildLinkRefs();
}, false);
buildLinkRefs();
</script>