Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2013, 19:58
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

Парсинг из xml
Добрый день,Есть такой xml файл
Код:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE test SYSTEM "test.xml">
<test>
<border X="100" Y="100" weight="100" hight="100"></border>
	<questions>
		<single>
		<question>Вопрос</question>
		<answer rating="0"> 20</answer>
		<answer rating="1"> 40</answer>
		<answer rating="1"> 50</answer>
		<answer rating="0"> 20,5</answer>
		</single>
		
	</questions>
<TextButton>Ответить на вопрос</TextButton>
<TextButton>Стереть ответы</TextButton>
<ResultTextTrue>Ваш ответ верен!</ResultTextTrue>
<ResultTextFalse>Ваш ответ не верен!</ResultTextFalse>
</test>
в котором якобы задаютса там длинна ширина расположение цвет многое другое,допустим как border.

Подскажите как мне правильно создать рамку в JS коде,если нагляднее то chtckbox поместить внутрь рамки заберая все данные о рамке из xml документа так же как я забираю и все остальное из этого xml документа.
<!DOCTYPE html>
<html>

<head>



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

<script type="text/javascript">


var answer={}
		$(document).ready(function(){
			$.ajax({
				type: "GET",  
				url: "test.xml", 
				dataType: "xml", 
				success: vasa	
	 			
		});
		
	
		
		function vasa(xml) { 

		        question=$(xml).find('question')[0].textContent;
				$('.cont').append('<h4>'+question+'</h4>');
				TextButton=$(xml).find('TextButton')[0].textContent;
				$('.onki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
				TextButton=$(xml).find('TextButton')[1].textContent;
				$('.lolki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
				
				ResultTextTrue=$(xml).find('ResultTextTrue')[0].textContent;
				
				ResultTextFalse=$(xml).find('ResultTextFalse')[0].textContent;
				
				border=$(xml).find('border').Content;
				$('.border');

				var answers = $(xml).find('answer');
 
             		        answers.each(function(index){
 
                                var a = this.textContent;
 
                                var rating = +this.getAttribute('rating');
 
                                $('.cont').append('<p><label><input type="checkbox">'+a+'</label></p>');
 
                                answer[index] = rating;

				

				
 
                });


	

		}
	
				
	 			
		});
		
			
				
	 			
		
			



function checkAnswer() {
var error = false;
            var inputs = document.getElementsByTagName('input');
            for(var i = 0; i < inputs.length ; i++){
               var checked = inputs[i].checked;
              var right = answer[i] == 1;
               if (checked !== right){
               error=true;
               break;
               }
        }
      
        output.value=error ? ''+ResultTextFalse+'' : ''+ResultTextTrue+'';
		
        return false;
    }

</script>

</head>
<body>
<form onsubmit="return checkAnswer()">
	
	
	<div class='cont'></div>
	
	
	
	
    <p><button typre="submit"><div class='onki'></div></button> <button type="reset"><div class='lolki'></div></button></p>

    <p><textarea id="output" readonly></textarea></p>

</form>



</body>

</html>


И поправте меня по пониманию проблемы.Я так понимаю что эта рамка это что-то типа дива с задаными размерами цветом и тому подобным?или это что-то другое?И я могу делать примерно так
<div class='?????'></div>

Тоесть создавать див с задаными размерами в xml и что бы это выглядело как рамка и засовывать туда checkbox?

Зделать это прописывая стили в самом JS коде а потом создавать поле в котором будут чекбоксы,это у меня особых усилий не заняло.А как подгребать из xml файла я просто даже не представляю,натолкните пожалуста.
Ответить с цитированием
  #2 (permalink)  
Старый 12.03.2013, 20:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Vasy, xml файл тоже ты проектируешь походу?
Атрибуты ноды получай через $node.attr('width') или node.getAttribute('width') для width например.
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2013, 11:58
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

так видно?
Я это все делаю сам и не для какойто там работи,а для себя пока.Сами понимаете с моими знаниями рано пока=)
тоесть мне получать из border каждый атрибут отдельно?но как их тогда связать в единое целое?

ну тоесть вот так оно подключает все,но по отдельности.
width=$(xml).find('border').attr('width');


Пробовал зделать функцию которая вытаскивает все attr из border и в див вызывать функцию несовсем получилась и функция да и вызывать в див/

Достаю из xml документа я его вот так
width=$(xml).find('border').attr('width');
				$('.width')
				hight=$(xml).find('border').attr('hight');
				$('.hight')

а пытаюсь создать div вот так
<div id="id" class="hight"></div>

Что нетак?

И какбы если я все это задаю в самом javascripte то проблем не возникает
<style type="text/css">
   .block1 { 
    width: 200px; 
    background: #FFFAFA;
    padding: 5px;
    padding-right: 20px; 
    border: solid 5px black; 
    float: left;
   }

а в <body> </body> я просто вызываю вот так
<div class="block1">
	<div class='cont'></div>
	</div>


Я некак немогу понять как я все эти стили которые я получу по отдельности как атрибуты могу соеденить в один в один див как я это делалл прописывая css в самом javascript?

я непойму как мне сказать диву что то что я достал из xml являетса его стилями?

Последний раз редактировалось Vasy, 13.03.2013 в 13:11.
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2013, 13:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

block.style.border = '1px solid red';
// или по отдельности:
//border.style.borderWidth = '1px';
//border.style.borderStyle = 'dotted';
//border.style.borderColor = 'red';

Почему XML, а не JSON ? С ним же проще.
Ответить с цитированием
  #5 (permalink)  
Старый 13.03.2013, 13:29
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

Сообщение от danik.js Посмотреть сообщение
block.style.border = '1px solid red';
// или по отдельности:
//border.style.borderWidth = '1px';
//border.style.borderStyle = 'dotted';
//border.style.borderColor = 'red';

Почему XML, а не JSON ? С ним же проще.
Я хочу чтобы все данные я получал из xml

И несовсем понял,что вы это написали,задание некого стиля?

И всеже как мне из xml получать эти стили?
Ответить с цитированием
  #6 (permalink)  
Старый 13.03.2013, 13:44
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

ну что я имею ввиду
<border  width="200" background="#FFFAFA" padding="5px" padding-right ="20px" border="solid 5px black"  hight="100"></border>

как мне вот это передать в Javascript я уже понял,если передать по отдельности каждый атрибут(а подскажите ище если возможно как организовать некую функцию которая будет забирать все артибуты),и использовать как стили?Тоесть как мне это все указать как стили для div чтобы div понял что это не просто циферки а его стили?
Ответить с цитированием
  #7 (permalink)  
Старый 13.03.2013, 13:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

var decoration = xml.querySelector('border');
div.style.border = decoration.getAttribute('border');
Ответить с цитированием
  #8 (permalink)  
Старый 13.03.2013, 14:06
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

Скорее всего я туплю но несовсем понимаю где использовать то што вы написали?в каком месте кода?и как передавать это в div с id="id"?


<html>

<head>



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

<script type="text/javascript">


var answer={}
		$(document).ready(function(){
			$.ajax({
				type: "GET",  
				url: "test.xml", 
				dataType: "xml", 
				success: vasa	
	 			
		});
		
		
		
		
		
		function vasa(xml) { 

		        question=$(xml).find('question')[0].textContent;
				$('.cont').append('<h4>'+question+'</h4>');
				TextButton=$(xml).find('TextButton')[0].textContent;
				$('.onki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
				TextButton=$(xml).find('TextButton')[1].textContent;
				$('.lolki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
				
				ResultTextTrue=$(xml).find('ResultTextTrue')[0].textContent;
				
				ResultTextFalse=$(xml).find('ResultTextFalse')[0].textContent;
			
				
				
				
				
	
				
				var answers = $(xml).find('answer');
 
             		        answers.each(function(index){
 
                                var a = this.textContent;
 
                                var rating = +this.getAttribute('rating');
 
                                $('.cont').append('<p><label><input type="checkbox">'+a+'</label></p>');
 
                                answer[index] = rating;

				
							
				
 
                });
				
				
		
		}
					
	
				
	 			
		});
		
			
				
	 			
		
			



function checkAnswer() {
var error = false;
            var inputs = document.getElementsByTagName('input');
            for(var i = 0; i < inputs.length ; i++){
               var checked = inputs[i].checked;
              var right = answer[i] == 1;
               if (checked !== right){
               error=true;
               break;
               }
        }
      
        output.value=error ? ''+ResultTextFalse+'' : ''+ResultTextTrue+'';
		
        return false;
    }

</script>

</head>
<body>
<form onsubmit="return checkAnswer()">
	
	<div id="id" >
	<div class='cont'></div>
	</div>
    <p><button type="submit"><div class='onki'></div></button> <button type="reset"><div class='lolki'></div></button></p>

    <p><textarea id="output" readonly></textarea></p>
	
</form>




</body>

</html>
Ответить с цитированием
  #9 (permalink)  
Старый 13.03.2013, 14:23
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

var div = document.getElementById('id')

Использовать там, где доступен xml конечно же)
Ответить с цитированием
  #10 (permalink)  
Старый 13.03.2013, 14:44
Профессор
Отправить личное сообщение для Vasy Посмотреть профиль Найти все сообщения от Vasy
 
Регистрация: 09.02.2013
Сообщений: 165

А блин ну я и тупил долго,да заработало спасибо,но в чем фишка.мне нужен не только border="5px solid black"
а все атрибуты из <style></style>
<style  width="200" background="#FFFAFA" padding="5px" padding-right ="20px" border="solid 5px black"  hight="100"></style>

Последний раз редактировалось Vasy, 13.03.2013 в 14:59.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
парсинг xml с сайта используя js teanrus Общие вопросы Javascript 5 18.12.2012 13:36
парсинг XML с параметрами javaScript-ом Sveta AJAX и COMET 5 22.10.2012 11:20
Парсинг XML в IE eternal AJAX и COMET 1 20.11.2011 01:25
не работает парсинг XML в IE Enxiro jQuery 6 25.08.2010 12:26
Парсинг XML dabutch Общие вопросы Javascript 17 09.04.2009 09:48