javascript将元素从一个函数传递到另一个函数
这是一个部分代码:javascript将元素从一个函数传递到另一个函数,javascript,Javascript,这是一个部分代码: function readXmlUsingXPath(i,guid, xpath) { var xmlDoc = loadXML("gameFeed.aspx?guid=" + guid); if (xmlDoc == null) { document.getElementById(guid).innerHTML = "UPDATING"; return } else { }; i.innerHTML = xmlDoc.selectNodes(
function readXmlUsingXPath(i,guid, xpath) {
var xmlDoc = loadXML("gameFeed.aspx?guid=" + guid);
if (xmlDoc == null) { document.getElementById(guid).innerHTML = "UPDATING"; return }
else { };
i.innerHTML = xmlDoc.selectNodes(xpath)[0].text;
}
window.onload = function () {
for (var i = 0; i < document.getElementsByTagName('jackpot').length; i++) {
var guid = document.getElementsByTagName('jackpot')[i].getAttribute('data-g').split('|')[0];
var xpath = document.getElementsByTagName('jackpot')[i].getAttribute('data-g').split('|')[1];
readXmlUsingXPath(document.getElementsByTagName('jackpot')[i],guid, xpath);
}
}
函数readXmlUsingXPath(i,guid,xpath){
var xmlDoc=loadXML(“gameFeed.aspx?guid=“+guid”);
如果(xmlDoc==null){document.getElementById(guid.innerHTML=“updateing”;return}
else{};
i、 innerHTML=xmlDoc.selectNodes(xpath)[0]。文本;
}
window.onload=函数(){
对于(var i=0;i<li>
<a href="/gamepath/"><span>gameTitle</span>
<span><jackpot data-g="<%=game.Guid %>|<%=game.GamingProperties.JackpotFeedXpath %>">UPDATING . . .</jackpot></span>
</a>
</li>
首先,是-将getElementsByTagName()
和.getAttribute('data-g')的结果缓存到一个变量中
var myDataG = MyJackpotElement.getAttribute('data-g').split('|');
然后,由于要将guid
传递给服务器端脚本,因此不必处理来自HTML源代码的XPath,而是让服务器脚本在服务器端处理该项(使用XPath),这样它就可以从正在加载的项中获取XPath表达式(通过guid:)
让服务器端脚本返回您要查找的值(gameFeed.aspx?guid=
),而不是您将在客户端进一步处理以查找值的XML。首先,是-缓存getElementsByTagName()
和.getAttribute('data-g').split的结果。
转换为变量:
var myDataG = MyJackpotElement.getAttribute('data-g').split('|');
然后,由于要将guid
传递给服务器端脚本,因此不必处理来自HTML源代码的XPath,而是让服务器脚本在服务器端处理该项(使用XPath),这样它就可以从正在加载的项中获取XPath表达式(通过guid:)
让服务器端脚本返回您要查找的值(gameFeed.aspx?guid=
),而不是您将在客户端进一步处理以查找值的XML。按照Denis的建议重构后,代码是否工作
您一直执行getElementsByTagName的方式的一个大问题是,即使性能受到巨大影响,如果集合因任何原因发生更改,长度可能不再正确,并且您可能会在仅存在8的情况下请求元素9
此外,更改元素的innerHTML
可能会关闭浏览器
旁白:我已将readXmlUsingXPath
函数的I
参数重命名为jackpot
,这似乎比仅I
更合适
function readXmlUsingXPath(jackpot, guid, xpath) {
var xmlDoc = loadXML("gameFeed.aspx?guid=" + guid);
if (xmlDoc == null) {
document.getElementById(guid).innerHTML = "UPDATING";
return;
}
var firstNode = xmlDoc.selectNodes(xpath).item(0);
jackpot.innerHTML = firstNode.text;
}
window.onload = function () {
var jackpots = document.getElementsByTagName('jackpot');
for (var i = 0; i < jackpots.length; i++) {
var data = jackpots[i].getAttribute('data-g').split('|'),
guid = data[0],
xpath = data[1];
readXmlUsingXPath(jackpots[i], guid, xpath);
}
}
函数readXmlUsingXPath(jackpot、guid、xpath){
var xmlDoc=loadXML(“gameFeed.aspx?guid=“+guid”);
if(xmlDoc==null){
document.getElementById(guid).innerHTML=“更新”;
返回;
}
var firstNode=xmlDoc.selectNodes(xpath).item(0);
jackpot.innerHTML=firstNode.text;
}
window.onload=函数(){
var jackpots=document.getElementsByTagName(“jackpot”);
对于(变量i=0;i
按照丹尼斯的建议重构代码后,代码还能工作吗
您一直执行getElementsByTagName的方式的一个大问题是,即使性能受到巨大影响,如果集合因任何原因发生更改,长度可能不再正确,并且您可能会在仅存在8的情况下请求元素9
此外,更改元素的innerHTML
可能会关闭浏览器
旁白:我已将readXmlUsingXPath
函数的I
参数重命名为jackpot
,这似乎比仅I
更合适
function readXmlUsingXPath(jackpot, guid, xpath) {
var xmlDoc = loadXML("gameFeed.aspx?guid=" + guid);
if (xmlDoc == null) {
document.getElementById(guid).innerHTML = "UPDATING";
return;
}
var firstNode = xmlDoc.selectNodes(xpath).item(0);
jackpot.innerHTML = firstNode.text;
}
window.onload = function () {
var jackpots = document.getElementsByTagName('jackpot');
for (var i = 0; i < jackpots.length; i++) {
var data = jackpots[i].getAttribute('data-g').split('|'),
guid = data[0],
xpath = data[1];
readXmlUsingXPath(jackpots[i], guid, xpath);
}
}
函数readXmlUsingXPath(jackpot、guid、xpath){
var xmlDoc=loadXML(“gameFeed.aspx?guid=“+guid”);
if(xmlDoc==null){
document.getElementById(guid).innerHTML=“更新”;
返回;
}
var firstNode=xmlDoc.selectNodes(xpath).item(0);
jackpot.innerHTML=firstNode.text;
}
window.onload=函数(){
var jackpots=document.getElementsByTagName(“jackpot”);
对于(变量i=0;i
好的,所以我稍微修改了代码,
使它更简单
现在,它的工作原理与预期相符
function loadXMLDoc(guid,xpath,i) {
var xmlhttp;
if (window.XMLHttpRequest) {xmlhttp = new XMLHttpRequest();}
else {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.async = true;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
i.innerHTML = xmlhttp.responseXML.selectNodes(xpath)[0].text;
}
}
xmlhttp.open("GET", "gameFeed.aspx?guid=" + guid, true);
xmlhttp.send();
}
var tags = document.getElementsByTagName("pre");
for (var i = 0; i < tags.length; i++) {
var data = tags[i].getAttribute('data-g').split('|'), guid = data[0], xpath = data[1];
loadXMLDoc(guid,xpath,tags[i]);
}
函数loadXMLDoc(guid、xpath、i){
var-xmlhttp;
if(window.XMLHttpRequest){xmlhttp=newxmlhttprequest();}
else{xmlhttp=newActivexObject(“Microsoft.xmlhttp”);}
xmlhttp.async=true;
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
i、 innerHTML=xmlhttp.responseXML.selectNodes(xpath)[0]。文本;
}
}
open(“GET”,“gameFeed.aspx?guid=“+guid,true”);
xmlhttp.send();
}
var tags=document.getElementsByTagName(“pre”);
对于(var i=0;i
好的,所以我稍微修改了代码,
使它更简单
现在,它的工作原理与预期相符
function loadXMLDoc(guid,xpath,i) {
var xmlhttp;
if (window.XMLHttpRequest) {xmlhttp = new XMLHttpRequest();}
else {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.async = true;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
i.innerHTML = xmlhttp.responseXML.selectNodes(xpath)[0].text;
}
}
xmlhttp.open("GET", "gameFeed.aspx?guid=" + guid, true);
xmlhttp.send();
}
var tags = document.getElementsByTagName("pre");
for (var i = 0; i < tags.length; i++) {
var data = tags[i].getAttribute('data-g').split('|'), guid = data[0], xpath = data[1];
loadXMLDoc(guid,xpath,tags[i]);
}
函数loadXMLDoc(guid、xpath、i){
var-xmlhttp;
if(window.XMLHttpRequest){xmlhttp=newxmlhttprequest();}
else{xmlhttp=newa