- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正忙着为一所大学制作谷歌地图。我无法根据我拥有的 3 个“谷歌位置”数组(其中包含多组建筑物)一次显示特定建筑物。
理想情况下,我希望我的方法 displayLI()
从 getElementByClassName
列表中获取所选元素,并将其与我的所有 3 个数组进行比较,以确定所选元素的坐标元素并显示标记。我找不到我的错误。运行不起作用。
// accordion map-nav
var allSpan = document.getElementsByTagName('SPAN');
for (var i = 0; i < allSpan.length; i++) {
allSpan[i].onclick = function() {
if (this.parentNode) {
var childList = this.parentNode.getElementsByTagName('UL');
for (var j = 0; j < childList.length; j++) {
var currentState = childList[j].style.display; // display
if (currentState == "none") { //none
childList[j].style.display = "block"; //block
} else {
childList[j].style.display = "none"; //none
}
}
}
}
}
< input type = "button"
value = "Back"
onclick = "back()"
style = "width: 100%" > <!-- zoom back out to normal mode-->
< /div>
/ / end accordion
//google API code
// arrays of locations
// general first set of loations
var locations = [
['Thwaite Hall', 53.779734, -0.400104, ],
['University Of Hull', 53.771455, -0.367387, ],
['The Lawns', 53.786513, -0.426347, ]
];
//Cottingham university spots
var cott = [
['The Lawns', 53.786513, -0.426347, ca1],
['Needler Hall', 53.784283, -0.415365, ca2],
['Thwaite Hall', 53.779734, -0.400104, ca3]
];
// Uni buildings e.g
var uniBuildings = [
['Venn', 53.769942, -0.368782, cb1],
['Hull University Business School', 53.770244, -0.370305, cb2],
['Staff House', 53.772009, -0.368257, cb3],
['RBB', 53.771496, -0.368842, cb4],
['Applied Science', 53.772372, -0.368942, cb5],
['Fenner', 53.771933, -0.369582, cb6],
['Ferens', 53.770680, -0.367264, cb7],
['Loten', 53.772275, -0.367345, cb8],
['Brynmor Jones Library', 53.771184, -0.369326, cb9],
['Student Union', 53.771872, -0.366331, cb10],
['Cohen', 53.769764, -0.366899, cb11],
['Wilberforce', 53.770685, -0.366115, cb12],
['Larkin', 53.770297, -0.368163, cb13]
];
//listed uni buildings
var listed = [
['Venn', 53.769942, -0.368782, lb1],
['Swale House', 53.769462, -0.371181, lb2],
['Rye House', 53.769350, -0.369564, lb3],
['Nidd, Esk, Wharfe Building', 53.769842, -0.371436, lb4],
['Cohen', 53.769768, -0.367227, lb5]
];
var massiveArray;
var map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 12, //10
center: new google.maps.LatLng(53.779734, -0.400104), // original placement 53.771455,-0.367387
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
//run the normal default loop setup b4 navigation
genericLoop(locations, map);
// start built code
// make generic for function test
function genericLoop(x, mapThis) { // try this. if not working
for (i = 0; i < x.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(x[i][1], x[i][2]),
animation: google.maps.Animation.BOUNCE,
map: mapThis
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(x[i][0]);
infowindow.open(mapThis, marker);
}
})(marker, i));
}
}
// change the view and location of markers and zoom
function uniBuildingsClick() {
// changes map size n zoom
newMap = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 15,
center: new google.maps.LatLng(53.771455, -0.367387), // original placement uni view
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// re-populate the map with new locations
genericLoop(uniBuildings, newMap);
}
//changes the view and location of markers and zoom
function cottBuildingsClick() {
// changes map size and zoom
newMap = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 14,
center: new google.maps.LatLng(53.782081, -0.413978), // original placement center
mapTypeId: google.maps.MapTypeId.ROADMAP
});
genericLoop(cott, newMap);
}
// listed buildings
function disListed() {
newMap = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 15,
center: new google.maps.LatLng(53.771455, -0.367387), // original placement center
mapTypeId: google.maps.MapTypeId.ROADMAP
});
genericLoop(listed, newMap);
}
//back button to re zoom out
function back() {
newMap = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 12, //10
center: new google.maps.LatLng(53.779734, -0.400104), // original placement 53.771455,-0.367387
mapTypeId: google.maps.MapTypeId.ROADMAP
});
genericLoop(locations, newMap);
}
function reFresh() {
google.maps.event.trigger(map, 'resize');
}
// function to show only selected li
function displayLI(idN, className) { // classname is array rn
// passed 'id' is the id of li element (building or residence)
// class is the array
console.log("this works");
//var elementArray = new Array();
var nodeList = document.getElementsByClassName("className"); // compare array lengths and array values
elementArray = [].slice.call(nodeList); // translates DOM to array
// elementArray = Array.prototype.slice.call(nodeList);
console.log(elementArray[0]);
var idNumberOnly = idN.slice(2, 4);
console.log(idNumberOnly); // works
//var selectedElement = elementArray[idNumberOnly];
//console.log(selectedElement.class);
// try to check if the elemenArray is equal to the other arrays?
var currentArray = new Array();
if (compare(elementArray, uniBuildings, idN) === 'true') { // test
console.log("test worked! UniB");
} else if (compare(elementArray, cott, idN) === 'true') {
console.log("cott");
} else if (compare(elementArray, listed, idN) === 'true') {
console.log("listed");
} else {
console.log("not working, get your shit together");
}
for (var i = 0; i < currentArray.length; i++) {
if (idN === currentArray[i][3]) { // assuming the correct array is chosen ... bc id is same for all arrays // maybe starts ay 1?
// display the marker and nothing else
newMap = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 12, //10
center: new google.maps.LatLng(currentArray[i][1], currentArray[i][2]), // original placement 53.771455,-0.367387
mapTypeId: google.maps.MapTypeId.ROADMAP
});
//genericLoop(currentArray[i], newMap); // if current array not working, try own marker and notification function
marker = new google.maps.Marker({
position: new google.maps.LatLng(currentArray[i][1], currentArray[i][2]),
animation: google.maps.Animation.BOUNCE,
map: newMap
});
// info window
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(currentArray[i][0]);
infowindow.open(newMap, marker);
});
break;
} else {
// error?
}
}
}
//trial
function compare(array1, array2, idnumber) {
if (array1.length != array2.length) {
return false;
}
for (var i = 0; i < array2.length; i++) {
if (idnumber === array2[i][3]) {
return true;
}
return false;
}
}
.prt {
display: none;
}
<div>
<div id="map-nav" style="height: 400px; max-width: 200px; background-color: grey; float: left; display: inline-block; position: relative; text-align: left; overflow-y: auto; overflow-x: hidden">
<span style="color: white">Search Estates:</span>
<!-- <input type="text" id="searchField" style="max-width: 150px"><input type="button" onclick="reFresh()" value="Go" id="searchIt" style="max-width: 50px; min-width: 46px"> -->
<br />
<! -- /* styled collapsible UL list*/ -->
<UL id="tree">
<LI style="list-style-type: none"><span><input type="button" value="Campus Buildings" onclick="uniBuildingsClick()" style="width: 100%"> <!-- zoom in to uni zone--></span>
<UL class="prt">
<LI><a id="cb1" class="uniB" onclick="displayLI(this.id, this.class)"><span>Venn</span></a>
</LI>// need the a tags, check error on chrome //something about null
<LI><a id="cb2" class="uniB" onclick="displayLI(this.id, this.class)"><span>Business School</span></a>
</LI>
<LI><a id="cb3" class="uniB" onclick="displayLI(this.id, this.class)"><span>Staff House</span></a>
</LI>
<LI><a id="cb4" class="uniB" onclick="displayLI(this.id, this.class)"><span>RBB</span></a>
</LI>
<LI><a id="cb5" class="uniB" onclick="displayLI(this.id, this.class)"><span>Applied Science</span></a>
</LI>
<LI><a id="cb6" class="uniB" onclick="displayLI(this.id, this.class)"><span>Fenner</span></a>
</LI>
<LI><a id="cb7" class="uniB" onclick="displayLI(this.id, this.class)"><span>Ferens</span></a>
</LI>
<LI><a id="cb8" class="uniB" onclick="displayLI(this.id, this.class)"><span>Loten</span></a>
</LI>
<LI><a id="cb9" class="uniB" onclick="displayLI(this.id, this.class)"><span>Brynmor Jones Library</span></a>
</LI>
<LI><a id="cb10" class="uniB" onclick="displayLI(this.id, this.class)"><span>Student Union</span></a>
</LI>
<LI><a id="cb11" class="uniB" onclick="displayLI(this.id, this.class)"><span>Cohen</span></a>
</LI>
<LI><a id="cb12" class="uniB" onclick="displayLI(this.id, this.class)"><span>Wilberforce</span></a>
</LI>
<LI><a id="cb13" class="uniB" onclick="displayLI(this.id, this.class)"><span>Larkin</span></a>
</LI>
</UL>
</LI>
<LI style="list-style-type: none"><span><input type="button" value="Cottingham Accommodation" onclick="cottBuildingsClick()" style="width: 100%"> <!-- zoom in to cottingham--></span>
<UL class="prt">
<LI><a id="ca1" class="cotA" onclick="displayLI(this.id, this.class)"><span>The Lawns</span></a>
</LI>
<LI><a id="ca2" class="cotA" onclick="displayLI(this.id, this.class)"><span>Needler Hall</span></a>
</LI>
<LI><a id="ca3" class="cotA" onclick="displayLI(this.id, this.class)"><span>Thwaite Hall</span></a>
</LI>
</UL>
</LI>
<LI style="list-style-type: none"><span><input type="button" value="Listed Buildings" onclick="disListed()" style="width: 100%"></span>
<UL class="prt">
<LI><a id="lb1" class="lisB" onclick="displayLI(this.id, this.class)"><span>Venn</span></a>
</LI>
<LI><a id="lb2" class="lisB" onclick="displayLI(this.id, this.class)"><span>Swale House</span></a>
</LI>
<LI><a id="lb3" class="lisB" onclick="displayLI(this.id, this.class)"><span>Rye House</span></a>
</LI>
<LI><a id="lb4" class="lisB" onclick="displayLI(this.id, this.class)"><span>Esk, Wharfe, Nidd (Business)</span></a>
</LI>
<LI><a id="lb5" class="lisB" onclick="displayLI(this.id, this.class)"><span>Cohen</span></a>
</LI>
</UL>
</LI>
</UL>
<script type="text/javascript">
// accordion script
</script>
<div id="map-canvas" style="width: 500px; height: 400px; float:left"></div>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script>
// google script
</script>
</div>
最佳答案
以下是 displayLI() 和 Compare() 函数的新 JS 代码:
function displayLI(idN) {
var cott = [
['The Lawns', 53.786513, -0.426347, 'ca1'],
['Needler Hall', 53.784283, -0.415365, 'ca2'],
['Thwaite Hall', 53.779734, -0.400104, 'ca3']
];
// Uni buildings e.g
var uniBuildings = [
['Venn', 53.769942, -0.368782, 'cb1'],
['Hull University Business School', 53.770244, -0.370305, 'cb2'],
['Staff House', 53.772009, -0.368257, 'cb3'],
['RBB', 53.771496, -0.368842, 'cb4'],
['Applied Science', 53.772372, -0.368942, 'cb5'],
['Fenner', 53.771933, -0.369582, 'cb6'],
['Ferens', 53.770680, -0.367264, 'cb7'],
['Loten', 53.772275, -0.367345, 'cb8'],
['Brynmor Jones Library', 53.771184, -0.369326, 'cb9'],
['Student Union', 53.771872, -0.366331, 'cb10'],
['Cohen', 53.769764, -0.366899, 'cb11'],
['Wilberforce', 53.770685, -0.366115, 'cb12'],
['Larkin', 53.770297, -0.368163, 'cb13']
];
//listed uni buildings
var listed = [
['Venn', 53.769942, -0.368782, 'lb1'],
['Swale House', 53.769462, -0.371181, 'lb2'],
['Rye House', 53.769350, -0.369564, 'lb3'],
['Nidd, Esk, Wharfe Building', 53.769842, -0.371436, 'lb4'],
['Cohen', 53.769768, -0.367227, 'lb5']
];
var currentArray = new Array();
if (compare(uniBuildings, idN) !== false) {
alert("test worked! UniB");
currentArray=compare(uniBuildings, idN);
}
if (compare(cott, idN) !== false) {
currentArray=compare(cott, idN);
alert("cott");
}
if (compare(listed, idN) !== false) {
currentArray=compare(listed, idN);
alert("listed");
}
newMap = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 12, //10
center: new google.maps.LatLng(currentArray[1], currentArray[2]),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
marker = new google.maps.Marker({
position: new google.maps.LatLng(currentArray[1], currentArray[2]),
animation: google.maps.Animation.BOUNCE,
map: newMap
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(currentArray[0]);
infowindow.open(newMap, marker);
});
}
function compare(array2, idnumber) {
for (var i = 0; i < array2.length; i++) {
if (idnumber === array2[i][3]) {
return array2[i];
}
}
return false;
}
对于 html,你应该像这样制作 li 标签:
<UL id="tree">
<LI style="list-style-type: none"><span><input type="button" value="Campus Buildings" onclick="uniBuildingsClick()" style="width: 100%"> <!-- zoom in to uni zone--></span>
<UL class="prt">
<LI><a id="cb1" class="uniB" onclick="displayLI(this.id)"><span>Venn</span></a>
</LI><!--need the a tags, check error on chrome //something about null-->
<LI><a id="cb2" class="uniB" onclick="displayLI(this.id)"><span>Business School</span></a>
</LI>
<LI><a id="cb3" class="uniB" onclick="displayLI(this.id)"><span>Staff House</span></a>
</LI>
<LI><a id="cb4" class="uniB" onclick="displayLI(this.id)"><span>RBB</span></a>
</LI>
<LI><a id="cb5" class="uniB" onclick="displayLI(this.id)"><span>Applied Science</span></a>
</LI>
<LI><a id="cb6" class="uniB" onclick="displayLI(this.id)"><span>Fenner</span></a>
</LI>
<LI><a id="cb7" class="uniB" onclick="displayLI(this.id)"><span>Ferens</span></a>
</LI>
<LI><a id="cb8" class="uniB" onclick="displayLI(this.id)"><span>Loten</span></a>
</LI>
<LI><a id="cb9" class="uniB" onclick="displayLI(this.id)"><span>Brynmor Jones Library</span></a>
</LI>
<LI><a id="cb10" class="uniB" onclick="displayLI(this.id)"><span>Student Union</span></a>
</LI>
<LI><a id="cb11" class="uniB" onclick="displayLI(this.id)"><span>Cohen</span></a>
</LI>
<LI><a id="cb12" class="uniB" onclick="displayLI(this.id)"><span>Wilberforce</span></a>
</LI>
<LI><a id="cb13" class="uniB" onclick="displayLI(this.id)"><span>Larkin</span></a>
</LI>
</UL>
</LI>
<LI style="list-style-type: none"><span><input type="button" value="Cottingham Accommodation" onclick="cottBuildingsClick()" style="width: 100%"> <!-- zoom in to cottingham--></span>
<UL class="prt">
<LI><a id="ca1" class="cotA" onclick="displayLI(this.id)"><span>The Lawns</span></a>
</LI>
<LI><a id="ca2" class="cotA" onclick="displayLI(this.id)"><span>Needler Hall</span></a>
</LI>
<LI><a id="ca3" class="cotA" onclick="displayLI(this.id)"><span>Thwaite Hall</span></a>
</LI>
</UL>
</LI>
<LI style="list-style-type: none"><span><input type="button" value="Listed Buildings" onclick="disListed()" style="width: 100%"></span>
<UL class="prt">
<LI><a id="lb1" class="lisB" onclick="displayLI(this.id)"><span>Venn</span></a>
</LI>
<LI><a id="lb2" class="lisB" onclick="displayLI(this.id)"><span>Swale House</span></a>
</LI>
<LI><a id="lb3" class="lisB" onclick="displayLI(this.id)"><span>Rye House</span></a>
</LI>
<LI><a id="lb4" class="lisB" onclick="displayLI(this.id)"><span>Esk, Wharfe, Nidd (Business)</span></a>
</LI>
<LI><a id="lb5" class="lisB" onclick="displayLI(this.id)"><span>Cohen</span></a>
</LI>
</UL>
</LI>
</UL>
你的 CSS 应该是这样的:
.prt li{
/*display: none;*/
cursor: pointer;
}
并且要注意将 html 代码包含在 javascript 代码中,我在 JS 代码中的 //end Accordion
之前发现了后退按钮。
你可以在这里看到结果(我改变了一些CSS,让它看起来更大......等等):JSFiddle
关于javascript - 将 "getElementsByClassName"中的元素与 google 位置数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31589299/
当我想检查 Explorer 是否存在 getElementsByClassName 时。我在代码下使用并且运行良好。 function getClass(obj) { if (document.
我正在尝试编写一个 PowerShell 脚本,以从网站上获取所有名为“newstitle”的类中的文本。 这就是我所拥有的: function check-krpano { $geturl=
我正在尝试在按钮单击时切换“覆盖”。在同一个类下添加这两个按钮并调用此函数后,JS 根本无法完成它。我不确定问题出在哪里: document.getElementsByClassName( 'trig
这个问题已经有答案了: Why does jQuery or a DOM method such as getElementById not find the element? (7 个回答) 已关闭
将尽力使其尽可能简洁。 使用 VB.Net 中的浏览器控件运行 Javascript 来循环浏览网页上的元素。 我已经让它大部分工作了,这将解决我过去几周的问题,我真的很感激这里的指点。 到目前为止:
我遇到了一个小问题,我想查询我的数据库,这样当用户使用自动完成功能时,我可以在名为 *Exist Act * 的另一列“td”上获取该产品的库存,现在好了使用这个新脚本,当我移出任何文本框时,它会更改
这个问题已经有答案了: Setting innerHTML vs. setting value with Javascript (8 个回答) 已关闭 6 年前。 我试图将日期附加到具有相同类的四个输
大家好,我想做这样的事情: function Div(data){ var A=document.getElementsByClassName('title')[data]; A.
我有一个网页爬虫,我正在使用 puppeteer 来爬行。我尝试使用 getElementsByClassName 获取 DOM 中的所有元素,但它返回了一个不稳定的集合。我期望收到一组 html 元
我有一个带有 TreeMap 片的网站,然后我使用 Ajax 删除该树并使用 javascript 插入数字。我用的是; document.getElementById("cut_oak_tree")
这个问题已经有答案了: Strange behavior when iterating over HTMLCollection from getElementsByClassName (3 个回答)
似乎每次都从闭包外部重新执行getElementsByClassName。 我可以通过将元素复制到数组中来解决这个问题,但我不知道是否有更好的方法。 这是一个代码示例: HTML
我用 VBA 抓取一些网站是为了好玩,我使用 VBA 作为工具。我使用 XMLHTTP 和 HTMLDocument(因为它比 internetExplorer.Application 更快)。 Pu
我一直在尝试使用以下指南进行简单的表单设置:https://www.w3schools.com/howto/howto_js_form_steps.asp. 我在表单内有三个带有 class="tab
我的代码不起作用,我不知道为什么。 var getElementsByClassName = function(className){ let result = []; let child =
我有一些元素属于“预览”类。我想让其中一个可以点击,所以首先我想通过 找出它在 HTML 集合中的索引号 console.log(document.getElementsByClassName("pr
我有一个问题,为什么我不想工作一段时间很累。我刚开始学js。非常感谢您的帮助
我正在使用 SnackJS API。我需要将一个事件附加到每个输入元素(文本框),类名称为“qty”。我无法为此使用 id 属性,因为它是动态生成的并且是唯一的,并且正在被其他东西使用: s
这个问题在这里已经有了答案: What do querySelectorAll and getElementsBy* methods return? (12 个答案) 关闭 8 年前。 我只想打印属
我想得到返回类名的长度 我想为一系列按钮添加事件监听器,它们都共享相同的类名。 removeButton = document.getElementsByClassName("removeButton
我是一名优秀的程序员,十分优秀!